PL/SQL for...loop迴圈語句

2019-10-16 22:53:59

FOR LOOP語句是一種重複控制結構,可以有效地編寫一個需要執行特定次數的迴圈。

語法

下面演示如何使用FOR LOOP語句 -

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-LOOP終止。

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

  • 迴圈變數或計數器的initial_valuefinal_value可以是文字,變數或表示式,但必須對數位求值。 否則,PL/SQL引發預定義的異常VALUE_ERROR
  • initial_value不必為1; 但是,迴圈計數器增量(或減量)必須為1
  • PL/SQL允許在執行時動態地確定回圈範圍。

範例

以下範例演示如何使用for迴圈 -

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

當上述程式碼在SQL提示符下執行時,它會產生以下結果 -

反轉FOR LOOP語句

預設情況下,迭代從初始值到最終值,通常從下限到上限。但是也可以使用REVERSE關鍵字來反轉這個順序。 在這種情況下,迭代以另一種方式進行。每次疊代後,迴圈計數器遞減。

但是,必須以升序(不降序)順序寫入範圍界限。 以下程式說明了這一點 -

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

當上述程式碼在SQL提示符下執行時,它會產生以下結果 -