`

oracle GLOBAL TEMPORARY 临时表

 
阅读更多
2、详细介绍
   会话级临时表是指临时表中的数据只在会话生命周期之中存在,当用户退出会话结束的时候,Oracle自动清除临时表中数据。
   事务级临时表是指临时表中的数据只在事务生命周期中存在。当一个事务结束(commit or rollback),Oracle自动清除临时表中数据。
3、建立临时表
   临时表的定义对所有会话SESSION都是可见的,但是表中的数据只对当前的会话或者事务有效.
   建立方法:
1) ON COMMIT DELETE ROWS 定义了建立事务级临时表的方法.
EXAMPLE:
SQL> CREATE GLOBAL TEMPORARY TABLE admin_work_area
  2          (startdate DATE,
  3           enddate DATE,
  4           class CHAR(20))
  5        ON COMMIT DELETE ROWS; -- 事务级别
SQL> create table permernate( a number);
SQL> insert into admin_work_area values(sysdate,sysdate,'temperary table');
SQL> insert into permernate values(1);
SQL> commit; --事务提交
SQL> select * from admin_work_area; -- 从缓存表中查不到数据
SQL> select  * from permernate;
A(列名)
----------
1

2)ON COMMIT PRESERVE ROWS
会话1:
SQL> drop table admin_work_area;
SQL> CREATE GLOBAL TEMPORARY TABLE admin_work_area
  2          (startdate DATE,
  3           enddate DATE,
  4           class CHAR(20))
  5       ON COMMIT PRESERVE ROWS;
SQL> insert into permernate values(2);
SQL> insert into admin_work_area values(sysdate,sysdate,'session temperary');
SQL> commit; --提交事务
SQL> select * from permernate;
A(列明)
----------
1(事务性临时表例子中插入的数据)
2

SQL> select * from admin_work_area; --查询临时表有值,因为还在同一session中

STARTDATE  ENDDATE    CLASS
---------- ---------- --------------------
17-1?? -03 17-1?? -03 session temperary

会话2:
SQL> select * from permernate;
A
----
1
2
SQL> select * from admin_work_area; -- 每个会话只能看到自身的数据
未选择行.
会话2看不见会话1中临时表的数据.

总结:会话或事务性临时表用来定义会话时临时表中数据的生命周期。临时表结构对于每个session来说都可见,而数据是每个session一份,类似于java中的私有变量一样;
其实不用去特别的记忆,从名字上就可以区分,如下:
ON COMMIT DELETE ROWS : 表明提交的时候删除数据;
ON COMMIT PRESERVE ROWS :表明提交的时候保存数据;
所以,在一次会话中执行了commit语句后,从事务性临时表中获取不到数据,而从会话临时表中可以获取到数据,就像上面例子中的演示。
分享到:
评论

相关推荐

    Oracle存储过程中使用临时表

    1. **创建临时表**:使用`CREATE GLOBAL TEMPORARY TABLE`语句创建临时表。例如: ```sql CREATE GLOBAL TEMPORARY TABLE temp_table ( column1 datatype, column2 datatype, ... ) ON COMMIT DELETE ROWS; `...

    Oracle 临时表用法

    ### Oracle 临时表用法详解 #### 一、背景与问题描述 在处理数据库操作时,经常遇到因数据量庞大而导致处理效率降低的问题。例如,某个报表中心的存储过程执行速度过慢,其中一个原因是该过程涉及到一个中间表,...

    ORACLE中临时表

    Oracle中的临时表是一种特殊的数据结构,用于存储会话或事务期间的数据,这些数据仅对当前会话可见,并在特定条件下自动清除。Oracle提供两种类型的临时表:事务型和会话型。 事务型临时表在事务开始时创建,插入的...

    oracle临时表用法

    Oracle 临时表用法 Oracle 临时表是一种特殊的表结构,它可以在数据库中临时存储数据,用于实现一些特定的应用场景。下面是 Oracle 临时表的详细知识点: 创建临时表 创建临时表的语法为: ``` CREATE GLOBAL ...

    主流数据库中临时表的使用

    在 DB2 中,临时表可以使用 DECLARE GLOBAL TEMPORARY TABLE 语句来定义。DB2 的临时表是基于会话的,且在会话之间是隔离的。当会话结束时,临时表的数据被删除,临时表被隐式卸下。对临时表的定义不会在 SYSCAT....

    Oracle中临时表的创建

    本文将详细介绍如何在Oracle中创建临时表,并探讨其应用场景以及两种主要类型的临时表:全局临时表(Global Temporary Table)与局部临时表(Local Temporary Table)的区别及其使用方法。 #### 二、Oracle临时表...

    oracle自增长与临时表

    1. **创建临时表**:使用`CREATE GLOBAL TEMPORARY TABLE`语句创建临时表,例如: ```sql CREATE GLOBAL TEMPORARY TABLE temp_table ( column1 datatype, column2 datatype ) ON COMMIT DELETE ROWS; ``` ...

    Oracle特性临时表

    - 使用`CREATE GLOBAL TEMPORARY TABLE`语句创建临时表。 - 可以通过`ON COMMIT`子句来定义数据的生命周期,即数据在何时被清除。 #### 三、创建临时表 **1. 基本语法:** ```sql CREATE GLOBAL TEMPORARY TABLE ...

    Oracle临时表

    ### Oracle临时表详解 #### 一、Oracle临时表概述 在Oracle数据库中,临时表是一种特殊类型的数据表,主要用于存储暂时性的数据。与永久表不同的是,临时表中的数据不会一直保留,而是根据不同的条件(如事务结束...

    Oracle中的临时表讲解

    Oracle中的临时表是一种特殊的数据表,用于存储在特定会话或事务期间产生的临时数据。它们在数据库中存在,但其生命周期受到严格的限制,以确保数据的隔离性和安全性。临时表主要分为两类:事务级别的临时表和会话...

    oracle,sql临时表.pdf

    创建全局临时表(CREATE GLOBAL TEMPORARY TABLE)是定义临时表的方式。对于事务级临时表,数据仅存在于事务生命周期内;对于会话级临时表,数据则在会话期间保持。当会话结束或事务结束时,Oracle会执行TRUNCATE...

    oracle临时表

    创建临时表的语法与创建普通表类似,但需要使用`CREATE GLOBAL TEMPORARY TABLE`语句。例如: ```sql CREATE GLOBAL TEMPORARY TABLE temp_table ( column1 datatype, column2 datatype, ... ) ON COMMIT ...

    oracle临时表操作学习资料

    - **创建**:创建事务临时表的命令通常类似于`CREATE GLOBAL TEMPORARY TABLE Temp_user (ID NUMBER(12) PRIMARY KEY, name VARCHAR2(10))`。默认情况下,如果没有明确指定,Oracle将创建的临时表视为事务临时表。...

    oracle,sql临时表.docx

    创建全局临时表的语句是`CREATE GLOBAL TEMPORARY TABLE`,它可以指定为事务特定或会话特定。对于事务特定的临时表,数据在事务生命周期内有效;而对于会话特定的临时表,数据在会话期间有效。当会话结束或事务结束...

    Oracle_临时表介绍

    Oracle的临时表是一种特殊的数据存储结构,主要用于处理一次性或短暂性的数据需求,尤其在处理大量数据和复杂查询时,能够显著提升性能。临时表在Oracle中有两种类型:会话级临时表和事务级临时表。 1. **会话级...

    OracleTemporaryTables(Oracle临时表).docx

    Oracle Temporary Tables,也称为Oracle临时表,是Oracle数据库系统中用于存储临时数据的特殊类型表。它们主要用于处理会话级别的数据,这些数据在特定会话或事务结束后会被自动清理,从而减少了对永久表的负担和...

    SQL Server中关于临时表概念及创建和插入数据等问题

    在 Oracle 数据库中,也有临时表的概念。临时表可以分为事务临时表和会话临时表。事务临时表是指数据只有在当前事务内有效,关闭事务后,数据表中的内容将被删除。会话临时表是指数据只在当前会话内有效,关闭当前...

    oracle 临时表使用例子并用CURSOR返回结果集的例子

    临时表的创建语法与普通表类似,但我们需要使用`GLOBAL TEMPORARY TABLE`关键字。例如,我们可以创建一个名为`TEMP_EMP`的临时表: ```sql CREATE GLOBAL TEMPORARY TABLE TEMP_EMP ( ID NUMBER, NAME VARCHAR2...

    Java调用oracle存储过程通过游标返回临时表

    本篇文章将深入探讨如何使用Java调用Oracle存储过程,并通过游标获取存储过程中返回的临时表数据。 首先,Oracle存储过程是一种在数据库端执行的预编译SQL语句和PL/SQL代码集合。它可以接收参数、执行业务逻辑并...

    Oracel储存过程用临时表

    当我们需要在存储过程中创建一个临时工作区域来存储中间结果,或者想要返回一个结果集时,临时表(Temporary Table)就派上了用场。 临时表是数据库中的特殊表格,它的生命周期只存在于会话(Session)内,一旦会话...

Global site tag (gtag.js) - Google Analytics