在oracle

时间:2017-07-05 14:39:43

标签: sql oracle plsqldeveloper

create or replace procedure sp_test as
begin
CREATE TABLE T AS SELECT col1,col2 FROM t1;
FOR N IN (SELECT * FROM T) LOOP
     UPDATE t1 SET t1.col1='value' where col2='value2';
END LOOP;
drop table T;
end;
/

我需要从t1表中选择数据到t表中以便应用一些修改,并在删除表t之前将这些修改合并到t1表(原始表)中。

我收到此错误:PLS-00103

2 个答案:

答案 0 :(得分:0)


您需要对任何pl / sql块中的任何ddl使用execute immediate。请尝试以下代码:

create or replace procedure sp_test 
is 
begin
Execute Immediate 'CREATE TABLE T AS SELECT col1,col2 FROM t1';

FOR N IN (SELECT * FROM T) LOOP
     Execute immediate 'UPDATE t1 SET t1.col1=''value'' where col2=''value2''';
END LOOP;
execute immediate 'drop table T';
end;
/

答案 1 :(得分:0)

感谢大家的贡献,我尝试了一些有效的方法: 用于更新的游标。 感谢您的帮助:)