CREATE GLOBAL TEMPORARY TABLE TABLENAME (
   COL1  VARCHAR2(10),
   COL2  NUMBER
) ON COMMIT PRESERVE(DELETE) ROWS ;
这种临时表不占用表空间,而且不同的SESSION之间互相看不到对方的数据
在会话结束后表中的数据自动清空,如果选了DELETE ROWS,则在提交的时候即清空数据,PRESERVE则一直到会话结束

解决方案 »

  1.   

    http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=6334
      

  2.   

    在Oracle8i中,可以创建以下两种临时表:
    1、会话特有的临时表
       CREATE GLOBAL TEMPORARY <TABLE_NAME> (<column specification>)
       ON COMMIT PRESERVE ROWS;2、事务特有的临时表
       CREATE GLOBAL TEMPORARY <TABLE_NAME> (<column specification>)
       ON COMMIT DELETE ROWS;
      
      在Oracle中,全局临时表并不会删除,实际上你只需要建立一次,以后直接应用就行了,这与MS和Sybase不一样。实际上在断开数据库连接时,临时表中数据自动清空,不同的Session之间是隔离的,不需要当心相互影响,不过如果启用了连接共享的话,你要用On Commit delete rows使数据仅在事物内部有效。