首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

execute immediate 与DML语句一起用的有关问题

2013-05-02 
execute immediate 与DML语句一起用的问题我写一简单脚本如下:beginexecute immediate create table tb(i

execute immediate 与DML语句一起用的问题
我写一简单脚本如下:
begin
  execute immediate 'create table tb(id int)';
  insert into tb values(1);
end;
/
执行时会提示表或视图不存在,后来修改如下:
declare
v_num float;
begin
   execute immediate 'create table tb(id int)';
   --下面for循环会执行10秒以上
   v_num:=1.234566;
     for i in 1..100000 loop
    v_num:=cos(v_num);
    end loop;
   insert into tb values(1);
end;
/
执行后仍然提示表或视图不存在
请问是否是因为execute immeditate 与DML有运行优先级的不同?
还是因为其它原因? execute?immediate
[解决办法]
了解 动态sql和静态sql的 检查顺序 就差不多搞清楚了。。。
[解决办法]
你的语句在编译的时候会检查到 tb 表不存在,直接就提示表或视图不存在了,根本就没有执行。 如果改成

begin
  execute immediate 'create table tb(id int)';
  execute immediate 'insert into tb values(1)';
  commit;
end;
应该就没问题了

热点排行