Plsql 使用Execute Immediate执行变量

Plsql 使用Execute Immediate执行变量,plsql,oracle11g,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

当我试图运行下面的代码时,会出现类似“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;
谢谢。

试试这个:

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;
';

好的,谢谢,如果我想在一个变量中执行两个表的创建,它工作得很好。我们怎样才能做到这一点。你能给我举个例子吗?为什么要用动态SQL创建一个表?