`

Oracle临时表在实际开发中的应用详解

    博客分类:
  • db
 
阅读更多

Oracle临时表在实际开发中的应用是本文我们主要要介绍的内容,我们知道,SQL Server 在编写查询式的存储过程的时候,一直都令我为之赞叹。Create procedure ps_procedure_name as select * from table; Select查询语句可以作为SQL Server存储过程的一部分,直接返回结果集。但在Oracle实现这种形式的存储过程是不合语法的。

为了达到这种目的,我们需要使用Oracle临时表(这是其中一种解决方案)。

Oracle数据库除了可以保存永久表外,还可以建立临时表temporary tables。Oracle临时表分为会话级临时表(ON COMMIT PRESERVE ROWS)和事务级临时表(ON COMMIT DELETE ROWS)。会话级临时表是指临时表中的数据只在会话生命周期之中存在,当用户退出会话结束的时候,Oracle自动清除临时表中数据。

事务级临时表是指临时表中的数据只在事务生命周期中存在。当一个事务结束(commit or rollback),Oracle自动清除临时表中数据。临时表中的数据只对当前Session有效,每个Session都有自己的临时数据,并且不能访问其它Session的临时表中的数据。

//在数据库建立一个临时表:


CREATE GLOBAL TEMPORARY TABLE ESPS.ESPS_EMP_RANK_TEMP  (  COM                VARCHAR2(20 BYTE),  EMPNO             VARCHAR2(20 BYTE),  EMPNAME          VARCHAR2(100 BYTE),  DEPTNAME         VARCHAR2(300 BYTE),  AMOUNT            NUMBER,  APPROVED_AMOUNT  NUMBER,  FOLDING_AMOUNT   NUMBER,  BENEFIT          NUMBER,  EXECUTED_RATE    NUMBER,  FOLDING_RANK     NUMBER,  BENEFIT_RANK     NUMBER,  RANK             NUMBER,  TOTAL_RANK       NUMBER  )  //ON COMMIT PRESERVE ROWS         --这里代表的是事务级临时表  ON COMMIT PRESERVE ROWS          --这里代表的是会话级临时表
在实际的操作中,我就验证过上面所说的。一开始我使用了事务级临时表,将数据插入到临时表时,使用commit操作,结果临时表的内容清空了。例如是:INSERT INTO ESPS_EMP_RANK_TEMP select * from table;commint;执行这两段SQL后,相当于没有插入数据。

如果我们使用会话级临时表,即使使用了commit,临时表中的内容还是存在的。直到会话断开时,临时表中的内容才真正的清空。所以,在实际的开发过程中,我们因该结合场景,使用不同类型的临时表。

在建议提案系统开发的过程中,我使用了会话级的临时表。将查询的数据插入到临时表中,并且读取临时表的内容,会话断开时,临时表中的内容自动清空。

在C#里面调用的三大步骤:

//C#里面定义的一个String类型的变量,存储一段动态SQL,存储过程为:

ESPS_EMP_RANK_STATISTIS({0},'{1}')  public static string I_EMP_RANK_STATISTIS = "BEGIN ESPS_EMP_RANK_STATISTIS({0},'{1}'); END;";
//执行存储过程,把结果集插入到临时表ESPS_EMP_RANK_TEMP


WAF.COM.Core.OracleHelper. ExecuteNonQuery(conn, CommandType.Text, string.Format(SqlCollector.I_EMP_RANK_STATISTIS, 2,’2011’));
//读取临时表中保存的结果集


Oracle DataReader dr = WAF.COM.Core.OracleHelper. ExecuteReader(“select * from ESPS_EMP_RANK_TEMP”)
关于Oracle临时表在实际开发中的应用的相关知识就介绍到这里了,希望本次介绍能够对您有所收获!

分享到:
评论

相关推荐

    Oracle 临时表用法

    ### Oracle 临时表用法详解 #### 一、背景与问题描述 在处理数据库操作时,经常遇到因数据量庞大而导致处理效率降低的问题。...同时,需要注意Oracle临时表的一些局限性,以便在实际应用中做出合理的决策。

    Oracle临时表

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

    oracle-临时表空间

    ### Oracle 临时表空间详解 #### 一、Oracle表空间概览 在Oracle数据库系统中,数据被组织成多个逻辑单元,这些单元被称为表空间。每个表空间由一个或多个物理磁盘文件(称为数据文件)组成,并且是数据库中的最高...

    Oracle特性临时表

    ### Oracle特性临时表详解 #### 一、临时表概述 在Oracle数据库中,临时表是一种特殊类型的表,它主要用于存储那些仅对当前会话或事务有意义的数据。与普通表不同的是,临时表的数据不会持久化存储,而是根据特定...

    oracle系统表详解(中文).docx

    ### Oracle系统表详解 Oracle数据库提供了大量的系统表来帮助管理员和开发者更好地理解并管理数据库环境。这些表存储了关于数据库对象的重要信息,如用户、表空间、段等。本文将详细介绍部分重要的Oracle系统表,...

    oracle表空间详解

    当用户执行了诸如 Order by 等命令后,服务器需要对所选取数据进行排序,如果数据很大,内存的排序区可能装不下太大数据,就需要把一些中间的排序结果写在硬盘的临时表空间中。 * 用户表自定义空间:用户可以通过 ...

    oracle 临时表详解及实例

    在实际应用中,临时表常用于以下场景: 1. 存储中间结果:在复杂的计算或分析过程中,临时表可以用来暂存中间结果,避免占用永久表资源。 2. 临时工作区:例如在数据处理或报表生成时,可以使用临时表来暂存和处理...

    Oracle临时表空间处理.txt

    ### Oracle 临时表空间管理详解 #### 一、概述 Oracle 数据库中的临时表空间主要用于存储临时对象,如排序操作、表连接等过程中产生的临时数据。这些数据在事务结束后会被自动清除,不会占用永久存储空间。正确管理...

    oracle 创建表空间命令

    在Oracle数据库管理系统中,创建表空间是管理数据库存储空间的关键操作。...在实际应用中,可能还需要根据具体需求调整表空间的存储参数,如设定表空间的初始大小、扩展大小、重用空间等,以满足不同的性能和容量要求。

    ORACLE修改表空间大小

    这通常发生在对临时表空间的操作上。当Oracle数据库执行涉及排序、连接等操作时,会使用临时表空间来存储临时数据。如果这些操作所需的空间超过了临时表空间的可用空间,就会引发ORA-01652错误。 #### 二、ORA-...

    简单理解数据库临时表

    ### 数据库临时表详解 #### 一、临时表的概念与作用 在数据库操作过程中,我们经常会遇到需要存储一些中间结果或临时数据的情况。...在实际开发和运维工作中,掌握临时表的使用方法是非常重要的。

    oracle表空间操作详解

    在 Oracle 数据库中,表空间可以分为三种类型:数据表空间、UNDO 表空间和临时表空间。 1. 数据表空间:用于存储数据库对象,如表、索引、视图等。 2. UNDO 表空间:用于存储Undo 信息,用于回滚事务。 3. 临时表...

    oracle创建表空间用户等

    ### Oracle 创建表空间、用户及分配权限详解 在Oracle数据库管理中,创建表空间和用户是常见的基础操作之一。本文将详细介绍如何在Oracle数据库中创建表空间、创建用户并分配相应的权限,以及如何设置表空间的自...

    Oracle 12CR2查询转换教程之临时表转换详解

    由于临时表在创建时就已经过滤了cust_state_province='CA'和channel_desc='Internet',所以在后续步骤中不再需要对临时表应用这些条件,进一步提升了执行效率。 查询的执行计划显示了临时表如何被用于替换子查询,...

    Oracle 表空间 收缩

    2. **移动表、索引等对象**:将block_id大于目标表空间大小的表、索引、分区表等对象移动到一个新的临时表空间中。 3. **收缩表空间**:在确保所有对象都已妥善处理后,执行收缩操作。 4. **移动对象回原表空间**:...

    Oracle表空间详解

    Oracle数据库中的表空间是存储数据的主要逻辑单位,它将数据逻辑地组织在一起,并将它们物理地存储在数据文件中。每个表空间可以包含一个或多个操作系统级别的文件,这些文件被称为数据文件。表空间有联机(ONLINE)...

    oracle创建表空间创建用户分配权限例程详解

    ### Oracle 创建表空间、创建用户及分配权限的例程详解 #### 一、概述 在 Oracle 数据库管理中,创建表空间、用户以及为这些用户分配相应的...在实际应用中,可以根据具体需求调整各项参数,以满足不同的业务场景。

    \Oracle 表空间与数据文件

    ### Oracle表空间与数据文件详解 #### 一、Oracle表空间与数据文件的概念 在Oracle数据库中,**表空间**是存储数据的基本单位之一,它是一个或多个数据文件的逻辑集合。表空间提供了数据存储的逻辑视图,而数据...

Global site tag (gtag.js) - Google Analytics