我在做报表时5通过存储过程生成报表数据,将报表数据保存至临时表中,然后通过select 临时表将数据显示出来,在select临时表之前将临时表中的数据清空,但是这样如果多个人同时查询报表时就可能将临时表中的数据清掉,请问如果能使数据不被清掉,并且临时表中的数据不会积累太多?

解决方案 »

  1.   

    只有插入数据到临时表中的会话才能看到本身插入的数据。所以多人操作每人只能看到和操作自己的数据.数据清空
    --------------------
    可以把临时表指定为事务相关(默认)或者是会话相关:
    ON COMMIT DELETE ROWS:指定临时表是事务相关的,Oracle在每次提交后截断表。
    ON COMMIT PRESERVE ROWS:指定临时表是会话相关的,Oracle在会话中止后截断表。
      

  2.   

    把临时表指定成会话级的,不同会话是看不到彼此的数据的.
    每一个会话对临时表的操作完全独立.create global temporary table table_name
        (....) on commit preserve rows