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

数据库 Oracle
本文我们详细介绍了Oracle临时表在实际开发中的应用,并介绍了C#中调用Oracle临时表的三个步骤,希望能够对您有所帮助。

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          --这里代表的是会话级临时表 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.

 

在实际的操作中,我就验证过上面所说的。一开始我使用了事务级临时表,将数据插入到临时表时,使用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;"
  • 1.
  • 2.

 

//执行存储过程,把结果集插入到临时表ESPS_EMP_RANK_TEMP

 

WAF.COM.Core.OracleHelper. ExecuteNonQuery(conn, CommandType.Text, string.Format(SqlCollector.I_EMP_RANK_STATISTIS, 2,’2011’)); 
  • 1.

 

//读取临时表中保存的结果集

 

Oracle DataReader dr = WAF.COM.Core.OracleHelper. ExecuteReader(“select * from ESPS_EMP_RANK_TEMP”) 
  • 1.

 

关于Oracle临时表在实际开发中的应用的相关知识就介绍到这里了,希望本次介绍能够对您有所收获!

【编辑推荐】

  1. Oracle 11g R2数据库示例用户安装说明
  2. Oracle 11g数据库审计功能应用实例解析
  3. Oracle 11g数据库默认审计选项说明详解
  4. Oracle 11g数据库使用XML Table的BUG解决
  5. PowerDesigner15连接Oracle出错的解决方案
责任编辑:赵鹏 来源: CSDN博客
相关推荐

2010-04-29 13:53:42

Oracle临时表

2010-04-02 18:01:39

Oracle清理

2010-05-31 15:49:29

MySQL临时表

2010-03-29 15:33:18

Oracle EXP

2010-04-06 16:00:19

Oracle更改表

2009-11-09 11:21:32

路由策略

2018-11-06 10:51:07

Redis开发存储系统

2010-05-06 16:02:42

Oracle SQL

2010-03-29 11:06:22

Oracle Spat

2010-01-27 13:37:05

Oracle临时表

2009-12-30 10:23:30

VLAN技术

2011-04-13 13:56:52

Oracle临时表

2010-04-30 17:50:25

2010-04-15 09:36:42

2010-05-07 12:19:38

Oracle删除用户表

2010-05-06 10:09:44

Oracle in

2011-07-04 10:33:45

临时表空间排序

2011-03-16 09:42:27

Oracle临时表

2021-04-29 08:11:11

SQL优化作用

2010-07-30 10:11:05

DB2临时表
点赞
收藏

51CTO技术栈公众号