oracle临时表的基础知识

发布时间:2020-02-18编辑:脚本学堂
本文介绍下,oracle数据库中临时表的一些知识,在oracle中临时表分为会话级的临时表、事务级的临时表的二种。有需要的朋友参考下。

本节主要内容:
oracle临时表

一,Oracle 临时表

两种类型的临时表

1,会话级的临时表
保存当前会话(session)用到的数据,数据会话期间存在,每次提交后ORACLE将截断表(删除全部行),两个不同的session所插入的数据互不相干。

2,事务级的临时表
保存当前事务用到的数据,数据只在事务期间存在,当中断会话时ORACLE将截断表。
会话的数据对于当前会话私有,每个会话只能看到并修改自己的数据,DML锁不会加到临时表的数据上。

二,创建语法
1,SESSION级临时表
 

复制代码 代码示例:
create global temporary table temp_tbl(col_a varchar2(30))   
on commit preserve rows

2,TRANSACTION级临时表
 

复制代码 代码示例:
create global temporary table temp_tbl(col_a varchar2(30))   
on commit delete rows

这二种表插入与查询与其它表的方式是一样的。

三,两种类型临时表的区别
会话级临时表采用 on commit preserve rows ;
而事务级则采用 on commit delete rows ;
用法上,会话级别只有当会话结束临时表中的数据才会被截断,而且事务级临时表则不管是 commit 、 rollback 或者是会话结束,临时表中的数据都将被截断。

四,在存储过程中创建oracle临时表
 

复制代码 代码示例:
create procduce test 
is  
isql varchar2(200); 
dptable varchar2(100):='drop table test'; 
begin 
isql:='create global temporary table  test (sid int,sname varchar2(20)) on commit delete rows; 
execute immediate isql; --创建临时表 
insert into test values (1,'abc'); 
execute immediate dptable; ---删除临时表 
end;