首页 > 代码库 > ORACLE-临时表
ORACLE-临时表
-- Create table 三目录监控存储过程临时表create global temporary table L_DIAITEM_ERROR( forgid NUMBER, --组织机构id forgname VARCHAR2(80), --组织机构名称 nccw NUMBER, --名称错误数 wdz NUMBER --未对照计数)on commit delete rows; --事务提交时,清空表数据--插入一条数据INSERT INTO L_DIAITEM_ERROR (nccw,wdz) SELECT 1,2 FROM DUAL;--查询该表数据SELECT * FROM L_DIAITEM_ERROR
说明:
执行插入语句后,如果没有提交,执行查询语句,该表有数据;如果提交事务,执行查询语句,该表没数据。
详细介绍
参考链接:http://www.cnblogs.com/vigarbuaa/archive/2012/06/04/2534797.html
在Oracle8i中,可以创建以下两种临时表:
(1)会话特有的临时表
语法:
CREATE GLOBAL TEMPORARY <TABLE_NAME> (<column specification>) ON COMMIT PRESERVE ROWS;
(2)事务特有的临时表
语法:
CREATE GLOBAL TEMPORARY <TABLE_NAME> (<column specification>) ON COMMIT DELETE ROWS;
举例:
CREATE GLOBAL TEMPORARY TABLE MyTempTable
区别:
ON COMMIT DELETE ROWS 说明临时表是事务指定,每次提交后ORACLE将截断表(清空表数据)
ON COMMIT DELETE ROWS 说明临时表是事务指定,每次提交后ORACLE将截断表(清空表数据)
作用域:
通过CREATE GLOBAL TEMPORARY TABLE命令创建一个临时表,
对于事务类型的临时表,数据只是在本事务期间存在;对于会话类型的临时表,数据在本会话期间存在。
临时表的特点:
可以对临时表创建索引,视图,触发器,可以用export和import工具导入导出表的定义,但是不能导出数据。表的定义对所有的会话可见。
(1) 多用户操作的独立性:对于使用同一张临时表的不同用户,ORACLE都会分配一个独立的 Temp Segment,这样就避免了多个用户在对同一张临时表操作时发生交叉,从而保证了多个用户操作的并发性和独立性;
(2) 数据的临时性:既然是临时表,顾名思义,存放在该表中的数据是临时性的。ORACLE根据你创建临时表时指定的参数(On Commit Delete Rows / On Commit Preserve Rows),自动将数据TRUNCATE掉。
ORACLE-临时表