Oracle之临时表

来源:互联网 发布:mmd导入镜头数据 编辑:程序博客网 时间:2024/06/05 08:14

  • 临时表

      临时表可以用来存储不需要最终存储到数据库中的临时数据,当进行数据量比较大的多表关联时,如果关联的结果集比较小,且查询该结果集比较高效,则可以考虑建立临时表来存放结果集;另外,当程序执行时可以将在整个执行过程中需要用到的数据存放在临时表中。临时表分为会话集临时表和事务级临时表,会话级临时表采用 on commit preserve rows ,而事务级则采用 on commit delete rows ;用法上,会话级别只有当会话结束临时表中的数据才会被截断,而且事务级临时表则不管是 commit 、 rollback 或者是会话结束,临时表中的数据都将被截断。

  • 会话级临时表
      会话级临时表若你不退出当前session,临时表数据就一直存在,在退出session时自动截断。两个session的临时表数据是互不相关的,一个session看不到另外一个session插入到临时表中的数据。会话级临时表示例:
     
  create global temporary table xxtp_emp_temp(     empno number,    empname varchar2(20),    deptname varchar2(20),    salary   number)on Commit preserve Rows;
  • 事务级临时表
      事务级临时表与事务相关,当事务提交或回滚时自动截断,session退出时也会自动截断事务级临时表,事务级临时表示例:
      
   create global temporary table dept(     deptno number,     deptname varchar2(20),     emp_count number) on commit delete rows;
       
0 0