在一个存储过程里面,我想先进行一个判断之后,根据判断的信息决定是否创建一个表,应该怎么执行呢?比如:
Begin
   Select count(*) into n from t1 where name = 'dd';
   if n > 0 then
    create table v_BackTableName as select * from table_name where rownum < 2;
    delete from v_BackTableName;
   end if;
End;但是上面会报错,说什么:
PROCEDURE LZDP1104.PRO_HX_BACKTRACK_TO_TABLE 编译错误错误:PLS-00103: 出现符号 "CREATE"在需要下列之一时:
        ( begin case declare
          else elsif end exit for goto if loop mod null pragma raise
          return select update while with <an identifier>
          <a double-quoted delimited-identifier> <a bind variable> <<
          continue close current delete fetch lock insert open rollback
          savepoint set sql execute commit forall merge pipe purge
行:69
文本:create table v_BackTableName as select * from table_name where rownum < 2;

解决方案 »

  1.   

    在存储过程中用execute immediate 'create table ...';
      

  2.   


    Begin
       Select count(*) into n from t1 where name = 'dd';
       if n > 0 then
        execute immediate 'create table v_BackTableName as 
                           select * from table_name where rownum < 2';
        execute immediate 'delete from v_BackTableName';
       end if;
    End;
    --如果你只有要表结构不要数据的话可以
        execute immediate 'create table v_BackTableName as 
                           select * from table_name where rownum < 2 and 1=2';