位置:首頁 > 數據庫 > PL/SQL教學 > PL/SQL FOR循環語句

PL/SQL FOR循環語句

FOR循環重複的控製結構,可以有效地編寫需要執行的特定次數的循環。

語法:

FOR counter IN initial_value .. final_value LOOP
   sequence_of_statements;
END LOOP;

下麵是控製在一個流程的循環:

  • 初始步驟首先被執行,並且隻有一次。這一步可以聲明和初始化任何循環控製變量。

  • 接著,condition,initial_value.. final_value 進行計算。如果為true,則執行循環體。如果為false,在循環體不執行,隻是之後的for循環流量控製跳轉到下一條語句。

  • 循環體的執行後,計數器變量的值被增加或減少。

  • 條件現在重新計算。如果為true,循環執行的過程重複(循環體,然後增加步,然後再次條件)。之後條件為false,則FOR-LOOP終止。

以下是PL/SQL for循環的一些特點:

  • initial_value 和 循環變量 或計算器 final_value 可以是字麵值,變量或表達式,但必須計算結果為數字。否則,PL/SQL就會拋出預定義異常VALUE_ERROR。

  • initial_value不必為1; 但是循環計數器增量(或減量)必須為1。

  • PL/SQL允許動態確定在運行時的循環範圍。

示例:

DECLARE
   a number(2);
BEGIN
   FOR a in 10 .. 20 LOOP
       dbms_output.put_line('value of a: ' || a);
  END LOOP;
END;
/

當上述代碼在SQL提示符執行時,它產生了以下結果:

value of a: 10
value of a: 11
value of a: 12
value of a: 13
value of a: 14
value of a: 15
value of a: 16
value of a: 17
value of a: 18
value of a: 19
value of a: 20

PL/SQL procedure successfully completed.

反轉FOR循環語句

缺省情況下,迭代前進從初始值到最終值,大體是由上界到下界約束。可以通過使用REVERSE關鍵字順序相反。在這種情況下,迭代前進的其他方式。每次迭代後循環計數器遞減。

但是,必須寫的範圍邊界在升序(非下降)的順序。下麵的程序說明了這一點:

DECLARE
   a number(2) ;
BEGIN
   FOR a IN REVERSE 10 .. 20 LOOP
      dbms_output.put_line('value of a: ' || a);
   END LOOP;
END;
/

當上述代碼在SQL提示符執行時,它產生了以下結果:

value of a: 20
value of a: 19
value of a: 18
value of a: 17
value of a: 16
value of a: 15
value of a: 14
value of a: 13
value of a: 12
value of a: 11
value of a: 10

PL/SQL procedure successfully completed.