鍍金池/ 教程/ 數(shù)據(jù)庫(kù)/ PL/SQL FOR循環(huán)語(yǔ)句
PL/SQL記錄
PL/SQL基本語(yǔ)法
PL/SQL集合
PL/SQL包
PL/SQL關(guān)系運(yùn)算符
PL/SQL比較運(yùn)算符
PL/SQL條件控制
PL/SQL字符串
PL/SQL算術(shù)運(yùn)算符
PL/SQL變量
PL/SQL IF-THEN-ELSIF語(yǔ)句
PL/SQL函數(shù)
PL/SQL異常
PL/SQL FOR循環(huán)語(yǔ)句
PL/SQL日期及時(shí)間
PL/SQL EXIT語(yǔ)句
PL/SQL DBMS輸出
PL/SQL過(guò)程
PL/SQL CONTINUE語(yǔ)句
PL/SQL數(shù)組
PL/SQL嵌套IF-THEN-ELSE語(yǔ)句
PL/SQL事務(wù)
PL/SQL CASE語(yǔ)句
PL/SQL IF-THEN語(yǔ)句
PL/SQL GOTO語(yǔ)句
PL/SQL運(yùn)算符優(yōu)先級(jí)
PL/SQL觸發(fā)器
PL/SQL運(yùn)算符
PL/SQL教程
PL/SQL WHILE循環(huán)語(yǔ)句
PL/SQL面向?qū)ο?/span>
PL/SQL循環(huán)
PL/SQL邏輯運(yùn)算符
PL/SQL IF-THEN-ELSE語(yǔ)句
PL/SQL數(shù)據(jù)類型
PL/SQL環(huán)境安裝設(shè)置
PL/SQL游標(biāo)
PL/SQL基本循環(huán)語(yǔ)句
PL/SQL搜索CASE語(yǔ)句
PL/SQL常量和文字
PL/SQL嵌套循環(huán)

PL/SQL FOR循環(huán)語(yǔ)句

FOR循環(huán)重復(fù)的控制結(jié)構(gòu),可以有效地編寫需要執(zhí)行的特定次數(shù)的循環(huán)。

語(yǔ)法:

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

下面是控制在一個(gè)流程的循環(huán):

  • 初始步驟首先被執(zhí)行,并且只有一次。這一步可以聲明和初始化任何循環(huán)控制變量。

  • 接著,condition,initial_value.. final_value 進(jìn)行計(jì)算。如果為true,則執(zhí)行循環(huán)體。如果為false,在循環(huán)體不執(zhí)行,只是之后的for循環(huán)流量控制跳轉(zhuǎn)到下一條語(yǔ)句。

  • 循環(huán)體的執(zhí)行后,計(jì)數(shù)器變量的值被增加或減少。

  • 條件現(xiàn)在重新計(jì)算。如果為true,循環(huán)執(zhí)行的過(guò)程重復(fù)(循環(huán)體,然后增加步,然后再次條件)。之后條件為false,則FOR-LOOP終止。

以下是PL/SQL for循環(huán)的一些特點(diǎn):

  • initial_value 和 循環(huán)變量 或計(jì)算器 final_value 可以是字面值,變量或表達(dá)式,但必須計(jì)算結(jié)果為數(shù)字。否則,PL/SQL就會(huì)拋出預(yù)定義異常VALUE_ERROR。

  • initial_value不必為1; 但是循環(huán)計(jì)數(shù)器增量(或減量)必須為1。

  • PL/SQL允許動(dòng)態(tài)確定在運(yùn)行時(shí)的循環(huán)范圍。

示例:

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

當(dāng)上述代碼在SQL提示符執(zhí)行時(shí),它產(chǎn)生了以下結(jié)果:

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.

反轉(zhuǎn)FOR循環(huán)語(yǔ)句

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

但是,必須寫的范圍邊界在升序(非下降)的順序。下面的程序說(shuō)明了這一點(diǎn):

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

當(dāng)上述代碼在SQL提示符執(zhí)行時(shí),它產(chǎn)生了以下結(jié)果:

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.