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

DB2 迴圈陳述式完全指南:WHILE、LOOP、REPEAT、FOR 四大語法詳解

     編輯:DB2 教學

在 DB2 SQL PL(預存程序/觸發器/匿名區塊)中,迴圈結構是流程控制的核心。本文系統整理四種迴圈語法:WHILE、LOOP、REPEAT、FOR,附上標準語法、流程圖解說與實務範例,助您精準選擇最適合的迴圈型態。

一、WHILE 迴圈 —— 先判斷再執行

適用於「迴圈次數未知、依條件決定是否進入」的情境。

語法

WHILE 條件 DO
    迴圈主體;
END WHILE;

特性

  • 進入前先評估條件,若為假則完全不執行。
  • 需在迴圈內部修改條件變數,否則易造成無限迴圈。

二、LOOP 迴圈 —— 無條件進入,靠 LEAVE/ITERATE 控制

最靈活、結構最簡單的迴圈,適合複雜中斷/繼續邏輯。

語法

[標籤:] LOOP
    陳述式;
    IF 條件 THEN LEAVE 標籤; END IF;  -- 相當於 break
    IF 條件 THEN ITERATE 標籤; END IF; -- 相當於 continue
END LOOP [標籤];

完整範例:計數器 1~100,跳過偶數、遇 50 中止

SET V_INDEX = 0;
MYLOOP: LOOP
    SET V_INDEX = V_INDEX + 1;
    IF V_INDEX >= 100 THEN LEAVE MYLOOP; END IF;
    IF MOD(V_INDEX, 2) = 0 THEN ITERATE MYLOOP; END IF;
    -- 處理奇數邏輯
END LOOP MYLOOP;

三、REPEAT 迴圈 —— 至少執行一次,直到條件為真

類似 do-while,保證迴圈主體最少執行一次。

語法

REPEAT
    SQL 陳述式;
UNTIL 條件  -- 條件為真則跳出
END REPEAT;

適用場景

  • 需先嘗試操作(如嘗試鎖定、讀取),再根據結果決定是否重試。

四、FOR 迴圈 —— 游標式逐列處理(最常用)

專為「對查詢結果集逐列處理」設計,自動管理游標開啟/擷取/關閉。

語法

FOR 迴圈名 AS
    SELECT ... FROM ...
DO
    SQL 陳述式;  -- 可直接引用 SELECT 欄位名
END FOR;

範例:逐筆處理待出貨訂單

FOR c1 AS
    SELECT order_id, cust_id FROM orders WHERE status = 'PENDING'
DO
    CALL process_order(c1.order_id, c1.cust_id);
END FOR;

五、四大迴圈選擇決策表

迴圈類型 進入條件 至少執行一次 適用場景 中斷方式
WHILE先判斷否條件驅動、次數未知條件變假 / LEAVE
LOOP無條件是複雜流程、多中斷點LEAVE / ITERATE
REPEAT後判斷是先嘗試再判斷UNTIL 條件真 / LEAVE
FOR查詢結果視結果集逐列處理結果集自動結束 / LEAVE

小結

掌握四種迴圈的語義差異,能讓 SQL PL 程式碼更簡潔、可讀且不易出錯:逐列處理首選 FOR,複雜控制用 LOOP,條件驅動用 WHILE,保證執行一次用 REPEAT。

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