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_value
和final_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提示符下執行時,它會產生以下結果 -