在oracle中执行plsql过程时,无法创建表并从中进行选择

在oracle中执行plsql过程时,无法创建表并从中进行选择,sql,oracle,plsqldeveloper,Sql,Oracle,Plsqldeveloper,我需要从t1表中选择t表中的数据,以便应用一些修改,并在删除表t之前将这些修改合并到t1表原始表中 我收到这个错误:PLS-00103 您需要对任何pl/sql块内的任何ddl使用execute immediate。请尝试以下代码: 感谢大家的贡献,我尝试了一些有效的方法: 用于更新的游标。 感谢您的帮助:您可能想看看,您不能将DDL直接用于PL/SQL使用EXECUTE IMMEDIATE“创建表t作为SELECT col1,col2 FROM t1”另外,我希望单引号中的“value”和“v

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

我收到这个错误:PLS-00103 您需要对任何pl/sql块内的任何ddl使用execute immediate。请尝试以下代码:


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

您可能想看看,您不能将DDL直接用于PL/SQL使用EXECUTE IMMEDIATE“创建表t作为SELECT col1,col2 FROM t1”另外,我希望单引号中的“value”和“value2”只是您实际打算做的一个测试示例,它们将被T表中每个N的实际值所取代。您可能根本不需要使用另一个表,但根据您的示例很难说。
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;
/
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;
/