1、基本 LOOP 循環語句
語法:
LOOP 語句序列; END LOOP; 其中,語句序列中需要一個EXIT語句或一個EXIT WHEN語句來中斷循環。
實例:
DECLARE x number(2) := 10; BEGIN LOOP dbms_output.put_line(x); x := x + 10; IF x > 50 THEN exit; END IF; END LOOP; dbms_output.put_line('LOOP結束: ' || x); END;
或者
使用EXIT WHEN語句來代替EXIT語句:
DECLARE x number(2) := 10; BEGIN LOOP dbms_output.put_line(x); x := x + 10; EXIT WHEN x > 50; END LOOP; dbms_output.put_line('LOOP結束: ' || x); END;
2、WHILE LOOP 語句
語法:
WHILE 條件 LOOP 語句序列; END LOOP;
實例:
DECLARE x number(2) := 10; BEGIN WHILE x < 20 LOOP dbms_output.put_line(x); x := x + 1; END LOOP; END;
3、FOR LOOP 語句
語法:
FOR counter IN initial_value .. final_value LOOP 語句序列; END LOOP; 說明: 循環變量或計數器的initial_value和final_value可以是文字,變量或表達式,但必須對數字求值。 否則,PL/SQL引發預定義的異常VALUE_ERROR; initial_value不必為1; 但是,循環計數器增量(或減量)必須為1; PL/SQL允許在運行時動態地確定循環范圍。
實例:
DECLARE x number(2); BEGIN FOR x IN 10 .. 20 LOOP dbms_output.put_line(x); END LOOP; END; 輸出結果: 10 11 12 13 14 15 16 17 18 19 20
反轉FOR LOOP語句: DECLARE x number(2) ; BEGIN FOR x IN REVERSE 10 .. 20 LOOP dbms_output.put_line(x); END LOOP; END; 輸出結果: 20 19 18 17 16 15 14 13 12 11 10
注:可在任何其他基本循環中使用一個或多個循環,如:while
或for
循環。
4、標記PL/SQL循環
標簽使用雙尖括號(<<
和>>
)括起來,並顯示在LOOP語句的開頭。標簽名稱也可以出現在LOOP
語句的末尾。
實例:
實例1: DECLARE i number(1); j number(1); BEGIN << outer_loop >> FOR i IN 1..3 LOOP << inner_loop >> FOR j IN 1..3 LOOP dbms_output.put_line('i = '|| i || ', j = ' || j); END loop inner_loop; END LOOP outer_loop; END; 實例2: DECLARE x number(2) := 0; BEGIN << mark_loop >> x := x + 1; IF x < 10 THEN dbms_output.put_line(x); GOTO mark_loop; END IF; END;