位置:首页 > 数据库 > PL/SQL在线教程 > PL/SQL FOR循环语句

PL/SQL FOR循环语句

FOR循环重复的控制结构,可以有效地编写需要执行的特定次数的循环。

语法:

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

下面是控制在一个流程的循环:

  • 初始步骤首先被执行,并且只有一次。这一步可以声明和初始化任何循环控制变量。

  • 接着,condition,initial_value.. final_value 进行计算。如果为true,则执行循环体。如果为false,在循环体不执行,只是之后的for循环流量控制跳转到下一条语句。

  • 循环体的执行后,计数器变量的值被增加或减少。

  • 条件现在重新计算。如果为true,循环执行的过程重复(循环体,然后增加步,然后再次条件)。之后条件为false,则FOR-LOOP终止。

以下是PL/SQL for循环的一些特点:

  • initial_value 和 循环变量 或计算器 final_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.