在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 [ON COMMIT PRESERVE ROWS]
AS
SELECT * FROM t_Department
删除时:
DROP TABLE QCUI_Temp_Trans
下面介绍在存储过程中使用临时表的例子:
CREATE OR REPLACE PROCEDURE temptest
(p_searchDate IN DATE)
IS
v_count INT;
str varchar2(300);
BEGIN
v_count := 0;
str:='drop table SETT_DAILYTEST';
execute immediate str;
str:='CREATE GLOBAL TEMPORARY TABLE SETT_DAILYTEST (
NACCOUNTID NUMBER not null,
NSUBACCOUNTID NUMBER not null)
ON COMMIT PRESERVE ROWS';
execute immediate str; ----使用动态SQL语句来执行
str:='insert into SETT_DAILYTEST (select naccountid,nsubaccountid from sett_dailyaccountbalance)';
execute immediate str;
END temptest;
分享到:
相关推荐
Oracle临时表空间的清理步骤,解决数据库临时表空间满的问题。
很好的,经典.创建Oracle 临时表,可以有两种类型的临时表:会话级的临时表,事务级的临时表 。
Oracle 临时表空间使用注意 Oracle 临时表空间使用注意 Oracle 临时表空间使用注意
Oracle临时表空间不足和批处理缓慢问题探讨.pdf
本文讲述了Oracle数据库两种临时表的创建及使用注意事项。
临时表本质上是一种cache的表现形式,Oracle的临时表都是事先建好的,一旦用了临时表,存放的是和本会话相关的数据,没有人会傻乎乎地用临时表来保存本应该共享的数据。 with子查询实际上也是用了临时表,...
Oracle 临时表功能介绍: Oracle中的临时表是全局的,需要在数据库设计时创建完成,而不是程序使用时。每个登陆用户都使用这一个相同的临时表,但互相之间看不到彼此的数据,也就是说临时表是会话独立的。
临时表的应用 1)、当某一个SQL语句关联的表在2张及以上,并且和一些小表关联。可以采用将大表进行分拆并且得到比较小的结果集合存放在临时表中。 2)、程序执行过程中可能需要存放一些临时的数据,这些数据在整个...
oracle临时表(事务级、会话级).docx
Oracle临时表空间主要用来做查询和存放一些缓冲区数据。临时表空间消耗的主要原因是需要对查询的中间结果进行排序。 重启数据库可以释放临时表空间,如果不能重启实例,而一直保持问题sql语句的执行,temp表空间会...
临时表数据库中临时表的深入研究,原理,用法
oracle查找定位占用临时表空间较大的SQL语句方法,包括:(1)造成临时表空间暴涨的SQL还在运行中(2)造成临时表空间暴涨的SQL已经运行过了。
在Oracle数据库中还有一种类型的表,叫做临时表。这个临时表跟永久表最大的区别就是表中的数据不会永远的存在。当一个会话结束或者事务结束的时候,这个临时表中的数据,不用用户自己删除,数据库自己会自动清除。
一个开发需求的解决方案Oracle临时表介绍.docx
Oracle释放临时表空间脚本
oracle自增长与临时表oracle自增长与临时表oracle自增长与临时表
Oracle数据库临时表空间处理,按照文档步骤执行!!!
NULL 博文链接:https://wei5201.iteye.com/blog/1111394
Oracle数据库创建临时表的过程以及和SQL Server临时表的不同点的对比的相关知识是本文我们主要要介绍的内容,接下来就让我们一起来了解...Oracle临时表分为会话级临时表和事务级临时表。 会话级临时表是指临时表中的
SpringBoot 整合Mybatis 创建临时表