执行立即创建表和更新表

时间:2011-04-18 11:58:16

标签: plsql

我使用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;

1 个答案:

答案 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中,首先动态创建这样的临时表确实是不好的做法。你为什么这样做?一旦我们知道也许我们可以提出更好的选择。