Oracle PL/SQL LOOP迴圈

PL/SQL LOOP迴圈,須小心使用,不然會被困在裡面

前言

於流程控制當中,迴圈的使用相當頻繁,可用來處理需要重複執行的相關邏輯,亦讓程式撰寫更有彈性。於PL/SQL當中提供基本三種基本類型的迴圈,分別為LOOP、WHILE與FOR迴圈,本篇先來記錄LOOP的使用方式。

LOOP迴圈基本上不像其他兩種迴圈一樣提供條件判斷功能,因此需要搭配如IF或是EXIT WHEN 來進行相關進行判斷,何時要將迴圈終止。於PL/SQL當中迴圈可使用CONTINUE或是EXIT進行迴圈控制,CONTINUE這個關鍵字與一般程式語言無異,可使流程跳回迴圈開始處;而EXIT則是將流程跳出迴圈。

實作

LOOP使用語法如下

1
2
3
4
LOOP
    .............
    ..............
END LOOP;

以下使用EXIT WHEN方式進行相關邏輯判斷,進行使用迴圈累加變數1至10,並只顯示基數的示範。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
DECLARE
    V_COUNT  INT :=  0;
BEGIN
    DBMS_OUTPUT.PUT_LINE('LOOP 迴圈開始');
    LOOP
        -- 累加 V_COUNT
        V_COUNT := V_COUNT + 1;

        -- 超過 10 則跳出迴圈
        EXIT WHEN V_COUNT > 10;
        -- 只顯示基數
        CONTINUE WHEN MOD(V_COUNT, 2) = 0;

        -- 輸出結果
        DBMS_OUTPUT.PUT( '[' || V_COUNT || '] ');
    END LOOP;
    DBMS_OUTPUT.PUT_LINE('');
    DBMS_OUTPUT.PUT_LINE('LOOP 迴圈結束');
END;

執行結果

1
2
3
LOOP 迴圈開始
[1] [3] [5] [7] [9] 
LOOP 迴圈結束