首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

使用 IBM Data Studio Developer V1.2 在 DB2 for z/OS 上調試 SQL 存儲過程(上)

     編輯:DB2 教學

前言

IBM Data Studio Developer V1.2 內建 Unified Debugger 客戶端,支援對 SQL 存儲過程進行除錯。如果您習慣在 Eclipse 平台上調試應用程式,會發現調試 DB2 SQL 存儲過程的流程非常相似。本文將示範如何利用 Data Studio Developer V1.2 的除錯功能,對一個 DB2 for z/OS 的原生 SQL 存儲過程進行調試。文中的大部分步驟同樣適用於 DB2 for Linux、UNIX、Windows 以及 DB2 for i 上的 SQL 存儲過程。範例存儲過程專為 DB2 for z/OS V9 設計。

為了最大程度受益於本文,您應熟悉使用 IBM Data Studio Developer 建立資料庫連線、操作資料表與存儲過程等資料庫物件。快速上手的好方法是下載試用版並完成其教學系列。

瞭解不同 DB2 版本的除錯器技術

DB2 for z/OS 提供兩種 IBM 除錯器技術:

  • 傳統 SQL Debugger:支援 DB2 for z/OS V8(含與 LUW V8 FP7 同步發布的 PTF UK03933),僅提供外部 SQL 存儲過程的除錯支援。
  • Unified Debugger:最新技術,支援 DB2 for z/OS V8(含與 DB2 for Linux、UNIX、Windows V9 FP2 同步發布的 PTF UK25860)及 DB2 for z/OS V9。對於 V8 可調試外部 SQL 存儲過程;對於 V9 則支援 Java 存儲過程、原生 SQL 過程與外部 SQL 存儲過程。

兩者主要差異在於 Unified Debugger 同時支援 Java 與 SQL 過程除錯,並持續支援巢狀過程呼叫的調試。本文專注於 Unified Debugger。

準備範例資料表

本文建立的存儲過程以原生 SQL 撰寫,輸入商品 ID,利用 PRODUCT 表中儲存的成本、運費與客戶付款資訊計算利潤,並將結果寫回 PRODUCT 表的 PROFIT 欄位。

以下 DDL 用於建立並填充 PRODUCT 表,若要驗證過程中的 SQL 語句,請先執行此腳本。

CREATE TABLE ADMF001.PRODUCT (
  ITEM VARCHAR(6) NOT NULL,
  COST DECIMAL(8,2),
  SHIPPING DECIMAL(8,2),
  PAYMENT DECIMAL(8,2),
  PROFIT DECIMAL(8,2)
);

INSERT INTO ADMF001.PRODUCT (ITEM, COST, SHIPPING, PAYMENT)
VALUES ('001', 100.00, 19.99, 150);

INSERT INTO ADMF001.PRODUCT (ITEM, COST, SHIPPING, PAYMENT)
VALUES ('002', 80, 8.99, 99.99);

建立與部署存儲過程

使用精靈建立過程

本節使用「預存程序精靈」產生範例存儲過程的基本框架,再手動加入計算利潤的邏輯,最後學習如何在部署時啟用除錯選項——這是後續調試的前提條件。

若伺服器上已有現成的 SQL 存儲過程,可從 Database Explorer 拖入資料開發專案進行調試,前提是該過程在部署時已啟用除錯選項;否則必須重新部署並勾選「Enable debugging」。

以下步驟建立名為 PROFITUPDATE 的範例存儲過程:

  1. 在 Data Studio Developer 中使用 DB2 for z/OS 連線建立新的資料開發專案:
    File > New > Data Development Project,精靈會提示指定資料庫連線(若無連線可用連線精靈建立)。
  2. 右鍵專案選擇 New > Stored Procedure 啟動精靈,命名為 PROFITUPDATE,語言選 Native SQL。
  3. 在 SQL Statements 頁面的 Statement details 區塊輸入以下 SQL(變數前加冒號定義為主機變數):
    SELECT COST, SHIPPING, PAYMENT FROM PRODUCT WHERE ITEM = :itemID;
    點擊 Validate 檢查語法並自動格式化。
  4. 在 Parameters 頁面,精靈已根據 :itemID 建立輸入參數 itemID。點擊 Add… 新增輸出參數 itemProfit,模式為 OUT,型別 DECIMAL(8,2)。
  5. 在 Deploy Options 頁面勾選 Enable debugging,完成精靈。

精靈產生的過程本體不含計算利潤邏輯,需手動修改。為節省時間,可直接貼上以下完整過程本體:

CREATE PROCEDURE PROFITUPDATE (
  IN itemID VARCHAR(6),
  OUT itemProfit DECIMAL(8, 2)
)
VERSION VERSION1
ISOLATION LEVEL CS
LANGUAGE SQL
ALLOW DEBUG MODE
WLM ENVIRONMENT FOR DEBUG MODE WLMENV1
QUALIFIER ADMF001
COMMIT ON RETURN YES
-- SQL Stored Procedure
-- itemID
-- itemProfit
P1: BEGIN
  -- Declare variables
  DECLARE itemPayment DECIMAL(8,2) DEFAULT 0.0;
  DECLARE total_cost DECIMAL(8,2) DEFAULT 0.0;

  P2: BEGIN
    DECLARE itemCost DECIMAL(8,2) DEFAULT 0.0;
    DECLARE itemShippingFee DECIMAL(8,2) DEFAULT 0.0;

    -- Declare cursor
    DECLARE cursor1 CURSOR FOR
    SELECT COST, SHIPPING, PAYMENT FROM PRODUCT
    WHERE ITEM = itemID;

    OPEN cursor1;
    FETCH cursor1 INTO itemCost, itemShippingFee, itemPayment;
    SET total_cost = itemCost + itemShippingFee;
  END P2;

  SET itemProfit = itemPayment - total_cost;
  UPDATE PRODUCT SET PROFIT = itemProfit
  WHERE ITEM = itemID;
END P1

儲存後,在 Data Project Explorer 右鍵選擇 Deploy 部署。若建立時已啟用除錯,部署時會自動帶入;否則可在部署精靈的 Routine Options 勾選 Enable debugging。

設定除錯器會話管理程式

Unified Debugger 架構包含三大元件:伺服器端、客戶端 與 會話管理程式。客戶端與會話管理程式通訊,會話管理程式再與伺服器端交換除錯資訊與請求。會話管理程式扮演中介軟體角色,透過 TCP/IP 協調雙向通訊。

使用除錯器前,必須在網路某處(客戶端、伺服器或其他機器)啟動會話管理程式進程。若未正確設定,Data Studio Developer 會提示「會話管理程式不可用」,導致無法使用 Unified Debugger。

本文採用最簡單的方式:在客戶端機器上啟動會話管理程式。

  1. 尋找 Data Studio Developer V1.2 安裝目錄下的 db2dbgm.bat(路徑:[DS install directory]\dsdev\bin)。
  2. 在命令提示字元執行 db2dbgm.bat,記下輸出的主機 IP 與埠號(預設閒置逾時 50 分鐘,可編輯批次檔調整)。
  3. 在 Data Studio Developer 選擇 Window > Preferences,展開 Run/Debug > DB2 Stored Procedure Debugger,選擇 Use already running session manager 並填入剛才記下的 IP 與埠號。

注意:請保持會話管理程式視窗開啟,關閉視窗會終止會話。

設定其他除錯器偏好設定

在同一偏好設定頁面可調整兩項常用選項:

  • Inactivity setting:除錯器在斷點停留無操作時的最大閒置秒數(預設 300 秒),逾時後自動讓過程繼續執行以釋放伺服器資源。
  • Error trace setting:除非 IBM 服務人員要求,否則保持 0(關閉伺服器端診斷追蹤)。

設定執行配置(可選)

在開始除錯前,可透過 Run Settings 指定執行前/後 SQL、輸入參數值、是否提交變更、DB2 for z/OS 的 Collection ID 等。範例過程最後會更新 PRODUCT 表,為了驗證結果,可在 After Run 分頁輸入 SELECT * FROM PRODUCT,執行後結果會顯示在 Output 視圖。

開始除錯

  1. 在 Data Project Explorer 右鍵存儲過程選擇 Debug…。
  2. 彈出標準 Eclipse 除錯配置頁,所有項目已預設,點擊 Debug 繼續。
  3. 因範例過程有一個輸入參數,除錯器會開啟 Specify Parameter Values 對話框輸入值(若 Run Settings 已預填則直接顯示)。

至此,所有前置作業完成,除錯器將進入原始碼編輯器,您可設定斷點、逐步執行、檢視變數值等,完整體驗 Unified Debugger 的強大功能。下一部分將深入介紹實際除錯操作與進階技巧。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved