在一个存储过程里创建一个临时表总是提示错误:
Create global TEMPORARY PackCodeTemp(PackCode varchar2 (30),flag int )ON COMMIT PRESERVE/DELETE ROWS;错误内容是:
Compilation errors for PROCEDURE ACCTEST.XEXPORTPACKCODEError: PLS-00103: 出现符号 "CREATE"在需要下列之一时:
        begin case declare end
          exit for goto if loop mod null pragma raise return select
          update when while with <an identifier>
          <a double-quoted delimited-identifier> <a bind variable> <<
          close current delete fetch lock insert open rollback
          savepoint set sql execute commit forall merge
          <a single-quoted SQL string> pipe
       符号 "declare在 "CREATE" 继续之前已插入。
Line: 36
Text: Create  TEMPORARY PackCodeTemp(PackCode varchar2 (30),flag int )ON COMMIT PRESERVE/DELETE ROWS  ;

解决方案 »

  1.   

    在存储过程里不能直接执行DDL语句,你要用执行字符串的形式来执行它。
      

  2.   

    sql语句也不对
      Create global TEMPORARY table PackCodeTemp(PackCode varchar2 (30),flag int ) ON COMMIT PRESERVE
     ROWS
      

  3.   

    "COMMIT PRESERVE/DELETE ROWS  ;"中“PRESERVE/DELETE”分别对应trancation 临时表和session临时表,
    不能一起用了。
    COMMIT PRESERVE ROWS  ;
    或者
    COMMIT DELETE ROWS  ;
      

  4.   

    存贮过程执行ddl语句,首先你得有权限执行语句
      

  5.   

    在存储过程的begin前插入Authid Current_User is.这是用于授权的.