在SQL过程和SQL语句中测试DB2临时表

数据库
本文将会为您测试在分别在SQL过程以及SQL语句中创建临时表,并插入数据后,执行结果有何异同之处,供您参考,希望对您有所启迪。

本文将会为您测试在DB2数据库中,分别在SQL过程以及SQL语句中创建临时表,并插入数据后,执行结果有何异同之处,供您参考,希望对您有所启迪。
 
测试目标:
 
分别在SQL过程和SQL语句中创建临时表,并插入数据,看执行结果有什么异同。
 
测试环境:
 
DB2 UDB V9.1
 
执行附件里面的SQL语句,得到一个表。
 
测试代码和运行结果:
 
一、临时
DB2临时表在SQL过程和SQL语句中的测试总结
 
测试目标:
 
分别在SQL过程和SQL语句中创建临时表,并插入数据,看执行结果有什么异同。
 
测试环境:
 
DB2 UDB V9.1
 
执行附件里面的SQL语句,得到一个表。#p#
 
测试代码和运行结果:
 
一、临时表在SQL语句中
 
-- 定义一个全局临时表SESSION.RESULT
DECLARE GLOBAL TEMPORARY TABLE SESSION.RESULT
    ( 
         TMP_HYDM   VARCHAR(10),    -- 行业代码
         TMP_HYMC   VARCHAR(300)   -- 行业名称
    )
     WITH REPLACE
  NOT LOGGED; 
-- 插入数据到临时表   
INSERT INTO  SESSION.RESULT
SELECT MLDM,MLMC FROM DM_HY_CY;
 
-- 查询临时表数据   
SELECT * FROM SESSION.RESULT;
 
测试结果:以上SQL代码正常执行,但是没有查询到任何数据。
 
 二、临时表在SQL存储过程中
 
CREATE PROCEDURE SP_TEST_TMEP (  )#p#
        DYNAMIC RESULT SETS 1
------------------------------------------------------------------------
-- 语言:DB2 SQL 存储过程
------------------------------------------------------------------------
P1: BEGIN
        -- 定义一个全局临时表SESSION.RESULT
        DECLARE GLOBAL TEMPORARY TABLE SESSION.RESULT
            ( 
                        TMP_HYDM   VARCHAR(10),   -- 行业代码
                        TMP_HYMC   VARCHAR(300)   -- 行业名称
            )
             WITH REPLACE       -- 如果存在此临时表,则替换                            
                 NOT LOGGED;    -- 不在日志里纪录
 
         -- 插入数据到临时表
        INSERT INTO  SESSION.RESULT
        SELECT MLDM,MLMC FROM DM_HY_CY;#p#
 
P2: BEGIN
        -- 游标对客户机应用程序保持打开
        DECLARE CUR_RES CURSOR WITH RETURN FOR
                SELECT * FROM SESSION.RESULT;
        OPEN CUR_RES;
END P2;
END P1
 
测试结果:存储过程执行成功,并返回了插入的目标数据。
 
测试总结:
 
1、在SQL语句中,构建临时表是没有意义的,因为当SQL语句执行处于自动提交模式下时,执行后就COMMIT了,而一旦执行了COMMIT语句,临时表将从内存中清除。
 
2、在SQL过程中,临时表定义后,如果没有显式执行到COMMIT语句,则临时表一直存在。并且临时表支持INSERT INTO ... SELECT ... 的语句。
 
3、在DB2下,临时表的模式必须为SESSION,SESSION模式下表是一个内存表,这个SESSION是DB2特有的SCHEMA,SESSION对象的声明周期仅仅限于一次数据连接“会话”,一旦会话结束,SESSION对象就被从内存中清除了,这和JSP中的内置对象SESSION类似。
 
 

责任编辑:段燃 来源: 互联网
相关推荐

2010-09-06 15:13:05

DB2

2010-11-04 15:39:40

DB2 SQL语句

2010-11-11 11:25:45

SQL UPDATE语

2009-07-22 14:44:36

ibmdw

2010-11-01 11:13:57

DB2表管理

2010-11-02 14:37:58

DB2临时表定义

2010-09-06 10:43:15

DB2 SQL存储过程

2010-11-04 13:55:26

DB2 SQL脚本批量

2010-08-05 10:20:29

DB2数据库动态

2010-11-03 11:55:23

DB2公共表表达式

2011-08-17 21:49:55

建立视图SQL ServerOracle

2011-08-17 21:23:41

约束NOT NULLUNIQUE

2010-09-01 10:08:54

DB2SQL语句

2010-08-18 13:59:04

DB2纯SQL存储过程

2010-09-06 10:54:52

DB2 sql 存储过

2011-08-17 20:48:25

索引建立语句非聚集索引唯一索引

2010-09-30 16:00:40

DB2动态SQL

2011-08-22 17:41:25

SQL ServerOracleDB2

2010-11-04 12:00:59

db2存储过程

2010-08-05 14:50:23

DB2动态SQL
点赞
收藏

51CTO技术栈公众号