Oracle Temporary Tables(Oracle 临时表)1. 建立临时表语法A.ON COMMIT DELETE ROWS 定义了建立事务级临时表的方法CREATE GLOBAL TEMPORARY TABLE TABLE_NAME-----(COUMNS …)-----AS SELECT … FROM TABLE…ON COMMIT DELETE ROWS;当前session发出commit/rollback命令,则该事务周期发生的所有数据自动被Oracle删除(Oracle truncate table)。但不影响任何其他session的数据。B.ON COMMIT PRESERVE ROWS 定义了创建会话级临时表的方法CREATE GLOBAL TEMPORARY TABLE TABLE_NAME-----(COUMNS …)-----AS SELECT … FROM TABLE…ON COMMIT PRESERVE ROWS;当前session结束(用户正常退出 / 用户不正常退出 / Oracle实例崩溃),Oracle对这个会话的中发生的数据进行删除(Oracle truncate table)。但不影响任何其他session的数据。2. 特点说明A.临时表数据自动清空后,但是临时表的结构以及元数据还存储在用户的数据字典中。表的定义对所有的会话可见B.临时表不需要DML锁C.可以索引临时表和在临时表基础上建立视图D.在临时表上的索引也是临时的,也是只对当前会话或者事务有效E.临时表可以拥有触发器F.可以用export和import工具导入导出临时表的定义,但是不能导出数据
3. 使用技巧A.当某一个SQL语句关联的表在2张及以上,并且和一些小表关联。可以采用将大表进行分拆并且得到比较小的结果集合存放在临时表中B.程序执行过程中可能需要存放一些临时的数据,可以将这类数据放在临时表里非常方便C.存储过程中用到临时表:1> 在建立临时表前,应先加上对表名的判断Select count(*) into v_count from user_tables where table_name = ‘XXX’;If v_count=0 thenCreate global temporary table …在存储过程结束处,应该记得删除表execute immediate "drop table t_temp";
Oracle 下 spfile和pfile使用笔记Oracle 10G安装中一些常见问题解决相关资讯 Oracle技巧
- 通过进程id号知道一个Oracle会话所 (08/10/2008 07:12:58)
- Oracle控制文件多元化处理 (06/22/2008 11:08:35)
- 新手学堂 Linux下Oracle的自动启动 (03/31/2008 13:44:44)
| - Oracle PLS 调试的输出方法 (08/09/2008 07:51:09)
- Linux平台下Oracle9i数据库正确显 (04/06/2008 10:11:35)
- Oracle 9.2.0.1版函数编译一个小问 (03/24/2008 06:19:07)
|
本文评论 查看全部评论 (0)