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中,所以该临时表表使用的是临时段。