AdSense

網頁

2017/9/18

Oracle 使用Basic LOOP

Oracle的基本迴圈Basic LOOP範例如下

DECLARE
  c NUMBER := 0; -- 計算迴圈執行次數的變數
BEGIN
  LOOP
    DBMS_OUTPUT.PUT_LINE(c);
    c := c + 1; -- 每執行一次迴圈c的值就加1
    IF c > 5 THEN -- 當c大於5時離開迴圈
      EXIT; --EXIT用來離開迴圈
    END IF;
  END LOOP;
  DBMS_OUTPUT.PUT_LINE('LOOP迴圈執行結束');
END;

執行結果

0
1
2
3
4
5
LOOP迴圈執行結束

EXIT時的條件也可改用EXIT WHEN

DECLARE
  c NUMBER := 0;
BEGIN
  LOOP
    DBMS_OUTPUT.PUT_LINE(c);
    c := c + 1;
    EXIT WHEN c > 5;
  END LOOP;
  DBMS_OUTPUT.PUT_LINE('LOOP迴圈執行結束');
END;

當然也可以有第二層迴圈,參考下面範例

DECLARE
  x NUMBER := 0;
  y NUMBER := 0;
BEGIN
  LOOP -- 第一層迴圈
    DBMS_OUTPUT.PUT_LINE('x:' || x);
    y := 0;
    LOOP -- 第二層迴圈
      DBMS_OUTPUT.PUT_LINE('y:' || y);
      y := y + 2;
      EXIT WHEN y > 4;
    END LOOP;
    x := x + 1;
    EXIT WHEN x > 2;
  END LOOP;
END;

執行結果

x:0
y:0
y:2
y:4
x:1
y:0
y:2
y:4
x:2
y:0
y:2
y:4

使用CONTINUE

DECLARE
  x NUMBER := 0;
BEGIN
  LOOP
    x := x + 1;
    CONTINUE WHEN MOD(x , 2) = 1; -- MOD函數計算餘數,相當於x % 2。當x除以2餘數等於1時回到迴圈的開頭執行
    EXIT WHEN x > 10;
    DBMS_OUTPUT.PUT_LINE('x:' || x);
  END LOOP;
END;

執行結果

x:2
x:4
x:6
x:8
x:10


沒有留言:

AdSense