PL/SQL - 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 允许在运行时动态确定循环范围。


示例

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 LOOP 语句

默认情况下,迭代从初始值到最终值,通常从下限向上到上限。 您可以使用 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. 

❮ PL/SQL 循环