首页  ·  知识 ·  数据库
Oracle临时表攻略
网友      编辑:dezai   图片来源:网络
Oracle临时表攻略

PL/SQL编程武器库 临时表

环境准备

建立两种临时表 ,本例使用scott用户下的emp表中的数据作为临时表数据

--建立两张临时表

--建立事务级临时表

create

global

temporary table emp_delete on commit delete rows

as select *

from emp

where 1=2

--建立会话级临时表

create

global

temporary table emp_preserve on commit preserve rows

as select *

from emp

where 1=2

下面说一下两种临时表的异同

相同点:两种表都不能永久的保存记录。他们都是用临时表空间。

不同点:事务级临时表临时表在提交后就回被清空。

而会话级临时表只有在SESSION 断开后才会被清空。

临时表的使用范围:

建议:在逻辑相当复杂,并且生成的数据

实验步骤如下

向事务级表插入数据

insert into EMP_DELETE

select * from emp

不提交而是在同一个回话中查询这个表的数据

select * from EMP_DELETE 这时候是有数据的。

确认提交

再次查询临时表的数据。

select * from EMP_DELETE

这个时候是没有数据的。在提交的时候,是事务级临时表已经被清空了。

再对会话级临时表做相同的动作。插入数据

insert into EMP_PRESERVE

select * from emp

查询

select *

from EMP_PRESERVE

确认提交

再次查询

select *

from EMP_PRESERVE

仍然有数据。

但是在别的session中却查询不出数据。

select *

from EMP_PRESERVE

当我们关闭这个session的窗口时,数据就被清空了。

当我们使用union 将多个结果集区分的时候,可以使用with构建一张虚拟的临时表

With fis as (select * from emp)

select *

from fis

where empno <7900

union

PL/SQL编程武器库 临时表

环境准备

建立两种临时表 ,本例使用scott用户下的emp表中的数据作为临时表数据

--建立两张临时表

--建立事务级临时表

create

global

temporary table emp_delete on commit delete rows

as select *

from emp

where 1=2

--建立会话级临时表

create

global

temporary table emp_preserve on commit preserve rows

as select *

from emp

where 1=2

下面说一下两种临时表的异同

相同点:两种表都不能永久的保存记录。他们都是用临时表空间。

不同点:事务级临时表临时表在提交后就回被清空。

而会话级临时表只有在SESSION 断开后才会被清空。

临时表的使用范围:

建议:在逻辑相当复杂,并且生成的数据

实验步骤如下

向事务级表插入数据

insert into EMP_DELETE

select * from emp

不提交而是在同一个回话中查询这个表的数据

select * from EMP_DELETE 这时候是有数据的。

确认提交

再次查询临时表的数据。

select * from EMP_DELETE

这个时候是没有数据的。在提交的时候,是事务级临时表已经被清空了。

再对会话级临时表做相同的动作。插入数据

insert into EMP_PRESERVE

select * from emp

查询

select *

from EMP_PRESERVE

确认提交

再次查询

select *

from EMP_PRESERVE

仍然有数据。

但是在别的session中却查询不出数据。

select *

from EMP_PRESERVE

当我们关闭这个session的窗口时,数据就被清空了。

当我们使用union 将多个结果集区分的时候,可以使用with构建一张虚拟的临时表

With fis as (select * from emp)

select *

from fis

where empno <7900

union

select *

from fis

where deptno=20

使用它你不用再建立临时表。

但是With 只能在select 中使用,并且只对一条语句使用。

select *

from fis

where deptno=20

使用它你不用再建立临时表。

但是With 只能在select 中使用,并且只对一条语句使用。

本文作者:网友 来源:网络
CIO之家 www.ciozj.com 微信公众号:imciow
   
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读