要把STUDENT表中的学生名和学号放在一张临时表中CREATE GLOBAL TEMPORARY LSSTUDENT(
       NAME VARCHAR2(15);
       CODE CHAR(6))ON COMMIT PERSERVE ROWS;
存储过程中要创建这样的临时表,这条语句要放在储存过程的什么位置报错:PLS-00103:出现符号 CREATE 在需要下列之一时:

解决方案 »

  1.   

    --要这样写 不能直接 create....
    execute immediate 'CREATE GLOBAL TEMPORARY LSSTUDENT(
      NAME VARCHAR2(15);
      CODE CHAR(6)
     )ON COMMIT PERSERVE ROWS';
      

  2.   

    on commit perserve rows、on commit delete rows 和不写这样的语句有什么区别啊 
      

  3.   

    delete rows用于事务相关,也就在事务结束后truncate data in the temporary table.
    preserve rows表示在会话结束后清除临时表的数据前者在事务提交后数据就已经清除了.
    后者在会话中止时或者导常退出时数据都会被清除掉.
      

  4.   

    不写的话  默认是perserve 会话级的  ?
      

  5.   


    # create procedure pro  
    # as  
    # str varchar2(100);  
    # begin  
    # str:='CREATE GLOBAL TEMPORARY TABLE TABLENAME (  
    #    COL1 VARCHAR2(10),  
    #    COL2 NUMBER  
    # ) ON COMMIT PRESERVE ROWS' ;  
    # execute immediate str;    --使用动态SQL语句来执行  
    # end;  
    # / 
      

  6.   


     create procedure pro  
     as  
     str varchar2(100);  
     begin  
     str:='CREATE GLOBAL TEMPORARY TABLE TABLENAME (  
        COL1 VARCHAR2(10),  
        COL2 NUMBER  
     ) ON COMMIT PRESERVE ROWS' ;  
     execute immediate str;    --使用动态SQL语句来执行  
     end;