PL/SQL - FOR迴圈語句



FOR迴圈是一種重複控制結構,允許您高效地編寫需要執行特定次數的迴圈。

語法

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

以下是For迴圈中的控制流程:

  • 初始化步驟首先執行,並且只執行一次。此步驟允許您宣告和初始化任何迴圈控制變數。

  • 接下來,評估條件,即initial_value .. final_value。如果為TRUE,則執行迴圈體。如果為FALSE,則迴圈體不執行,控制流跳轉到for迴圈之後的下一條語句。

  • for迴圈體執行完畢後,計數器變數的值會增加或減少。

  • 現在再次評估條件。如果為TRUE,則迴圈執行並重復該過程(迴圈體,然後增量步驟,然後再次條件)。條件變為FALSE後,FOR迴圈終止。

以下是PL/SQL for迴圈的一些特殊特性:

  • 迴圈變數或計數器的initial_valuefinal_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. 
plsql_loops.htm
廣告