我使用execute immediate& amp在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;
答案 0 :(得分:9)
您正在使用静态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;
然而,在Oracle中,首先动态创建这样的临时表确实是不好的做法。你为什么这样做?一旦我们知道也许我们可以提出更好的选择。