網頁

2017/9/11

Oracle 在PL/SQL中使用FOR LOOP迴圈

在Oracle PL/SQL中使用FOR LOOP迴圈的範例如下。

PL/SQL FOR LOOP迴圈語法

FOR index IN [REVERSE] lower_bound..upper_bound
LOOP
   ...statements...
END LOOP;

  • index為迴圈的計數變數,預設從lower_bound開始算,每一次迴圈會往upper_bound遞增。
  • lower_bound為index的起算值,必須是數值。
  • upper_bound為index的結束值,必須是數值。
  • lower_bound若等於upper_bound,則迴圈只會執行1次。
  • REVERSE為選擇性,會使迴圈index計數順序相反,從upper_bound開始往lower_bound遞減。
  • 沒有REVERSE時,lower_bound若大於upper_bound,則迴圈不會執行。


範例一,一個簡單的FOR LOOP迴圈

DECLARE
  x NUMBER := 10;  -- 宣告一個變數x,設值為10
BEGIN
  FOR i IN 1..10 LOOP -- 走訪10次的迴圈
    DBMS_OUTPUT.PUT_LINE(x * i);  -- 印出結果
  END LOOP; -- 迴圈結束,記得加上分號結束
END;

在SQL Developer中執行結果如下

已順利完成 PL/SQL程序。
10
20
30
40
50
60
70
80
90
100

範例二,在IN的後面加上REVERSE則由迴圈計數的上限(upper_bound)開始往下限(lower_bound)倒著執行。

DECLARE
  x NUMBER := 10;  -- 宣告一個變數x,設值為10
BEGIN
   FOR i IN REVERSE 1..10 LOOP -- 走訪10次的迴圈,加上REVERSE所以會i會從10開始數
     DBMS_OUTPUT.PUT_LINE(x * i);  -- 印出結果
   END LOOP; -- 迴圈結束,記得加上分號結束
END;

在SQL Developer中執行結果如下

已順利完成 PL/SQL程序。
100
90
80
70
60
50
40
30
20
10


沒有留言:

張貼留言