Oracle临时表

临时表是一种特殊的表。当需要对某一(也可以是多个)表中的一批数据进行反复的操作时,通过为这批数据创建一个临时表,可能会简化操作并且有可能提高效率。

语法:
CREATE GLOBAL TEMPORARY TABLE 临时表空间名
ON COMMIT DELETE ROWS 
ON COMMIT PRESERVE ROWS
(colum,colum,);

子句说明:

  • ON COMMIT DELETE ROWS
    (说明数据行只有在当前事务中可见,也是默认值,事务提交后数据行将消失)
  • ON COMMIT PRESERVE ROWS :(说明数据行仅在当前会话中可见)

实例:
使用ON COMMIT PRESERVE ROWS根据emp_tran表创建一个仅当前会话可见的临时表

CREATE GLOBAL TEMPORARY TABLE 
emp_temp
ON COMMIT PRESERVE ROWS
AS SELECT * FROM emp_tran;
Table created.

查询验证:

SQL> select * from emp_temp;
     EMPNO ENAME				JOB 	        SAL
---------------- ------------------ --------------------
      7369 SMITH		      CLERK            3500
      7876 ADAMS			  CLERK   	   	   3500
      7900 JAMES		      CLERK            2000
3 rows selected.

查询验证临时表是否使用表空间:

SELECT table_name, tablespace_name, temporary FROM dba_tables WHERE owner = 'NICE';

TABLE_NAME		       TABLESPACE_NAME	      TEMPORARY
---------- --------------------------- ------------------
……
EMP_TEMP						                    Y
CLASSINFO		       DATA_TABLEONE		        N
8 rows selected.
SQL>

结果显示:表emp_temp为临时表,因为最后一列值为Y,而该表也没有放在该用户默认表空间USERS中,所以该临时表表使用的是临时段。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐