SQLServer的存储过程中,可以通过'#+表名'的方式定义临时表,用于存放中间结果。这样的临时表只能本会话中使用,会话结束后,临时表会被自动删除(drop)掉。
而ORACLE的临时表却不是这个概念,它基于全局,不同的会话能使用同一个临时表,临时表不会自动drop。我的疑问是,ORACLE怎么实现SQLServer临时表的用法?难道只能显式的创建和删除?感觉ORACLE中通过存储过程做报表没有SQLServer方便,不知道大家有没有什么简单的方法。

解决方案 »

  1.   

    很少用Sql,習慣了Oracle的寫法,覺得習慣了就好吧。個人一般通過請求ID或區域ID,USERID來區分對同一臨時表的操作
      

  2.   

    只能说明你没有仔细研究oracle的临时表,有一种是可以提交后自动删除的
      

  3.   

    首先是创建临时表的语法:CREATE GLOBAL TEMPORARY TABLE table( column datatype [DEFAULT expr] [{ NULL | NOT NULL}] [, column datatype [DEFAULT expr] [ {NULL | NOT NULL} ]
    ... 
    )ON COMMIT {DELETE | PRESERVE } ROWS ;Oracle中的临时表有两种
    一种是事务级别的临时表它在事务结束的时候自动清空记录:ON COMMIT DELETE ROWS
    另一种是会话级的它在我们访问数据库是的一个会话结束后自动的清空:ON COMMIT PRESERVE ROWS