阜和教育
        CCNA培训
        CCNP培训
        CCIE直通车培训
        CCIP培训
        CCVP培训
        CCSP培训
        CCIE集中营培训
        windows server 2008培训
        Windows 7培训
        SQL Server 2008培训
        Windows Server 2003培训
        RHCSA培训
        RHCE培训
        RHCVA培训
        RHCDS培训
        RHCSS培训
        RHCA培训
        JBCAA培训
        JBCD培训
        OCA 认证专员培训
        Oracle 10g OCP培训
        Oracle 10g OCM培训
        H3CNA培训
        H3CNE培训
        H3CSE培训
        H3CTE培训
        H3CIE Routing&Switching培训
        BIG-IP培训
        Firepass培训
        ARX培训
        ITIL V3 Foundation培训
        ITIL V3 Capability培训
        ITIL V3 Lifecycle培训
        ITIL V3 Expert培训
        PMP培训
        Junos初级专员培训
        电信运营商科目SP培训
        Junos(SEC)培训
        E系列认证培训
        防火墙VPN认证培训
        入侵检测与防御IDP培训
        SSL认证培训
        WX认证培训
        统一接入控制UAC培训
        企业路由和交换培训
        VCP培训
        VCAP-DCA培训
        VCAP-DCD培训
        VCA-DT培训
        VCP-DT培训
        业务连续性/灾难恢复培训
        存储技师EMCST培训
        存储管理员EMCSA培训
        应用开发EMCApD培训
        系统管理员EMCSysA培训
        产品特定技术培训
    阜和教育-首页> Orale > Oracle临时表在实际开发中的应用详解
跳过导航链接

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

2011-9-5 11:54:00
文章摘要:Oracle临时表在实际开发中的应用是本文我们主要要介绍的内容,我们知道,SQLServer在编写查询式的存储过程的时候,一直都令我为之赞叹。Createprocedureps_procedure_nameasselect*fromtable;Select查询语句可以作为SQLServer存储过程的一部分,直接返回...
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的临时表中的数据。
//在数据库建立一个临时表:
1 CREATE GLOBAL TEMPORARY TABLE ESPS.ESPS_EMP_RANK_TEMP  
2 (  
3 COM                VARCHAR2(20 BYTE),  
4 EMPNO             VARCHAR2(20 BYTE),  
5 EMPNAME          VARCHAR2(100 BYTE),  
6 DEPTNAME         VARCHAR2(300 BYTE),  
7 AMOUNT            NUMBER,  
8 APPROVED_AMOUNT  NUMBER,  
9 FOLDING_AMOUNT   NUMBER,  
10 BENEFIT          NUMBER,  
11 EXECUTED_RATE    NUMBER,  
12 FOLDING_RANK     NUMBER,  
13 BENEFIT_RANK     NUMBER,  
14 RANK             NUMBER,  
15 TOTAL_RANK       NUMBER  
16 )  
17 //ON COMMIT PRESERVE ROWS         --这里代表的是事务级临时表  
18 ON COMMIT PRESERVE ROWS          --这里代表的是会话级临时表 
在实际的操作中,我就验证过上面所说的。一开始我使用了事务级临时表,将数据插入到临时表时,使用commit操作,结果临时表的内容清空了。例如是:INSERT INTO ESPS_EMP_RANK_TEMP select * from table;commint;执行这两段SQL后,相当于没有插入数据。
如果我们使用会话级临时表,即使使用了commit,临时表中的内容还是存在的。直到会话断开时,临时表中的内容才真正的清空。所以,在实际的开发过程中,我们因该结合场景,使用不同类型的临时表。
在建议提案系统开发的过程中,我使用了会话级的临时表。将查询的数据插入到临时表中,并且读取临时表的内容,会话断开时,临时表中的内容自动清空。 
在C#里面调用的三大步骤:
//C#里面定义的一个String类型的变量,存储一段动态SQL,存储过程为:
19 ESPS_EMP_RANK_STATISTIS({0},’{1}’)  
20 public static string I_EMP_RANK_STATISTIS = "BEGIN ESPS_EMP_RANK_STATISTIS({0},’{1}’); END;"; 
//执行存储过程,把结果集插入到临时表ESPS_EMP_RANK_TEMP
21 WAF.COM.Core.OracleHelper. ExecuteNonQuery(conn, CommandType.Text, string.Format(SqlCollector.I_EMP_RANK_STATISTIS, 2,’2011’)); 
//读取临时表中保存的结果集
22 Oracle DataReader dr = WAF.COM.Core.OracleHelper. ExecuteReader(“select * from ESPS_EMP_RANK_TEMP”) 
关于Oracle临时表在实际开发中的应用的相关知识就介绍到这里了,希望本次介绍能够对您有所收获!
上一篇:Java调用PL/SQL分页存储过程的代码示例
下一篇:Oracle数据库服务的相关知识详解
文章摘要:Oracle数据库的操作中,我们常常需要启动或关闭一些服务以实现我们需要的功能。但是前提是我们必须要了解Oracle数据库的服务,如果您对Oracle数据库的服务也不是很了解,没关系,本文我们就对Oracle数据库的服务进行了详细的介绍,接下来就让我们一起来了解一下这部分内容吧。 Oracle的默认服务一共有5个: 1.OracleDBConsoleorcloem控制台的服务进程。 2.OracleJobSchedulerORCL定时器的服务进程。 3.OracleOraDb10g_...