Oracle 临时表

在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;

但是对比DB2,Oracle的临时表有着很大的却别。
就像是JSP一样,Oracle的临时表是存放在application的。
也就是说,所有的存储过程都能够访问这个临时表。
其实,临时表就像是普通的表一样。

而在DB2,临时表前面会有SESSION.XX_TMP_TBL
无论你怎么搞这个临时表,都是存在SESSION里面。
而且每个存储过程内部可以构建和删除这样的临时表,相互独立。

对比Oracle,使不能在SP(存储过程)里面使用DDL。
也就是CREATE TABLE,CREATE INDEX这样的。

补充一点,DB2的临时表和Oracle的临时表上面都可以构建索引,INDEX。
但是DB2是SESSION.INDEX。
而Oracle使用的是普通的INDEX声明。

Oracle中可以对临时表创建索引,视图,出发器,可以用export和import工具导入导出表的定义,但是不能导出数据。表的定义对所有的会话可见。

创建时:

  1. CREATE GLOBAL TEMPORARY TABLE QCUI_Temp_Trans    
  2.  ON COMMIT DELETE ROWS    
  3.  AS    
  4.  SELECT * FROM t_Department  

删除时:

DROP TABLE QCUI_Temp_Trans   

相关推荐