PL/SQL - FOR循环语句



FOR循环是一种重复控制结构,允许您高效地编写需要执行特定次数的循环。

语法

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循环终止。

以下是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循环语句

默认情况下,迭代从初始值到最终值进行,通常是从下界向上到上界。您可以使用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. 
plsql_loops.htm
广告

© . All rights reserved.