首页 > 代码库 > ORACLE-临时表

ORACLE-临时表

迁移时间:2017年6月1日17:49:39
Author:Marydon
CreateTime--2017年1月20日09:57:48
二、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-临时表