我正在使用execute immediate创建pl/sql中的临时表,并在表中插入为什么要创建表.
之后我更新了表格.但我得到错误表不存在,因为它不是创建表thr立即执行
示例代码---------
begin
execute immediate 'create table t23 as select ''1'' aa from dual';
update t23 set aa ='2' where aa='1';
COMMIT ;
end;
Run Code Online (Sandbox Code Playgroud)
您正在使用静态SQL来执行更新,并且在PL/SQL运行之前对此进行了验证,因此发现它引用了当前不存在的表.您可以使用动态SQL来执行更新:
begin
execute immediate 'create table t23 as select ''1'' aa from dual';
execute immediate 'update t23 set aa =''2'' where aa=''1''';
COMMIT ;
end;
Run Code Online (Sandbox Code Playgroud)
但是,在Oracle中,首先动态创建这样的临时表确实是不好的做法.你为什么这样做?一旦我们知道也许我们可以提出更好的选择.