程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> 在SQL過程和SQL語句中測試DB2臨時表

在SQL過程和SQL語句中測試DB2臨時表

編輯:DB2教程
本文將會為您測試在DB2數據庫中,分別在SQL過程以及SQL語句中創建臨時表,並插入數據後,執行結果有何異同之處,供您參考,希望對您有所啟迪。
 
測試目標:
 
分別在SQL過程和SQL語句中創建臨時表,並插入數據,看執行結果有什麼異同。
 
測試環境:
 
DB2 UDB V9.1
 
執行附件裡面的SQL語句,得到一個表。
  
測試代碼和運行結果:
 
一、臨時
DB2臨時表在SQL過程和SQL語句中的測試總結
 
測試目標:
 
分別在SQL過程和SQL語句中創建臨時表,並插入數據,看執行結果有什麼異同。
 
測試環境:
 
DB2 UDB V9.1
 
執行附件裡面的SQL語句,得到一個表。
  
測試代碼和運行結果:
 
一、臨時表在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 (  )
        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;
 
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類似。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved