使用Execute Immediate执行变量

时间:2013-04-18 05:45:00

标签: plsql oracle11g

当我尝试运行以下代码时收到类似“PL / SQL编译错误”的错误。我在这做错了什么?

declare vsql varchar2(500);
 begin
   vsql:='begin
   create global temporary table temp_subset 
    ( id number
      ,"Category"  varchar2(2048)
      ,"Class"  varchar2(2048)
      ,"Measure"  varchar2(2048)
      ,"Actuals Year Total"  varchar2(2048)
      ,"COL NAME" varchar2(256)
      ,value varchar2(2048)
    );
end;';
execute immediate vsql;
end;

感谢。

1 个答案:

答案 0 :(得分:0)

试试这个:

vsql:='
   create global temporary table temp_subset 
    ( id number
      ,"Category"  varchar2(2048)
      ,"Class"  varchar2(2048)
      ,"Measure"  varchar2(2048)
      ,"Actuals Year Total"  varchar2(2048)
      ,"COL NAME" varchar2(256)
      ,value varchar2(2048)
    ) on commit delete rows';

如果需要创建两个表:

vsql:='
  begin
    execute immediate ''create table t1 ()'';
    execute immediate ''create table t2 ()'';
  end;
';