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

DB2 巢狀游標實戰範本:多層級資料遍歷與轉換邏輯

     編輯:DB2 教學

經典三層巢狀游標架構

P1: BEGIN
  -- 外層游標:部門
  DECLARE cursor1 CURSOR FOR SELECT did, dname FROM department;
  -- 中層處理塊
  P2: BEGIN
    OPEN cursor1;
    WHILE (at_endc1 = 0) DO
      FETCH cursor1 INTO v_did, v_dname;
      -- 內層游標:教師 (依部門過濾)
      P3: BEGIN
        DECLARE cursor2 CURSOR FOR
          SELECT id, name FROM teacher WHERE did = v_did AND dname = v_dname;
        OPEN cursor2;
        WHILE (at_endc2 = 0) DO
          FETCH cursor2 INTO v_tid, v_tname;
          -- 業務邏輯:寫入學生表
          INSERT INTO student (id, name, tid, tname, did, dname)
          VALUES (i_seq, CHAR(i_seq), v_tid, v_tname, v_did, v_dname);
          SET i_seq = i_seq + 1;
        END WHILE;
        CLOSE cursor2;
      END P3;
    END WHILE;
    CLOSE cursor1;
  END P2;
END P1

關鍵設計要點

  • 條件處理器:DECLARE CONTINUE HANDLER FOR NOT FOUND SET at_end = 1 替代傳統 SQLCODE 判斷,程式碼更清晰。
  • 巢狀 BEGIN-END 區塊:限制變數與游標作用域,避免名稱衝突。
  • 游標參數化:內層游標 WHERE 條件引用外層變數,實現主從關聯遍歷。
  • 序號產生:使用整數變數 i_seq 模擬遞增鍵值。

此模式廣泛適用於報表產生、資料遷移、主從明細轉換等批次處理場景。

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