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
答案 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)
感谢大家的贡献,我尝试了一些有效的方法: 用于更新的游标。 感谢您的帮助:)