oracle怎么控制存储过程execute immediate的执行顺序?发现execute im

oracle怎么控制存储过程execute immediate的执行顺序?发现execute immediate创表a,然后execute immediate update表a执行不了?

create or replace procedure pro_t  is
 cursor c is
   select table_name
     from user_all_tables
    where table_name in (select table_name
                           from user_tab_columns
                          where column_name = 'POSITION_ID');
 tablename varchar2(100);
 strinsert varchar2(1000);
begin
 open c;
 loop
   fetch c
     into tablename;
   exit when c%notfound;--你之前没有循环退出条件
   strinsert:= 'update  '|| tablename ||' set POSITION_ID =1' ;--之前sql语句拼的有问题
execute immediate strinsert;
 end loop;
 commit;
 close c;
end;

strinsert := 'update  ' || tablename || ' set POSITION_ID =1 and POSITION_NAME = ''新院区''';

循环必须要对

温馨提示:内容为网友见解,仅供参考
第1个回答  2016-01-20
按照上下顺序依次执行.
update这类的DML可以不使用execute immediate,直接写sql本回答被网友采纳

...怎么控制存储过程execute immediate的执行顺序?发现execute im
tablename varchar2(100); strinsert varchar2(1000);begin open c; loop fetch c into tablename; exit when c%notfound;--你之前没有循环退出条件 strinsert:= 'update '|| tablename ||' set POSITION_ID =1' ;--之前sql语句拼的有问题execute immediate strinsert; ...

在ORACLE数据库中,我使用IMP导入数据,错把数据导入到其他用户中。请问我...
select 'drop table '||table_name||';'from catwhere table_type='TABLE' 将会输出一批删除表的sql语句,执行一下这些SQL语句就可以了。 如下: declarebeginfor i in (select table_name from dba_tables where owner=:username) loopexecute immediate 'drop table '||:username||'.'||i.tablename;end l...

相似回答