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工具导入导出表的定义,但是不能导出数据。表的定义对所有的会话可见。
创建时:
- CREATE GLOBAL TEMPORARY TABLE QCUI_Temp_Trans
- ON COMMIT DELETE ROWS
- AS
- SELECT * FROM t_Department
删除时:
DROP TABLE QCUI_Temp_Trans