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_value
和final_value
可以是文字,变量或表达式,但必须对数字求值。 否则,PL/SQL引发预定义的异常VALUE_ERROR
。 initial_value
不必为1
; 但是,循环计数器增量(或减量)必须为1
。- PL/SQL允许在运行时动态地确定循环范围。
示例
以下示例演示如何使用for
循环 -
SET SERVEROUTPUT ON SIZE 100000;
DECLARE
a number(2);
BEGIN
FOR a in 10 .. 20 LOOP
dbms_output.put_line('value of a: ' || a);
END LOOP;
END;
/
当上述代码在SQL提示符下执行时,它会产生以下结果 -
反转FOR LOOP语句
默认情况下,迭代从初始值到最终值,通常从下限到上限。但是也可以使用REVERSE
关键字来反转这个顺序。 在这种情况下,迭代以另一种方式进行。每次迭代后,循环计数器递减。
但是,必须以升序(不降序)顺序写入范围界限。 以下程序说明了这一点 -
SET SERVEROUTPUT ON SIZE 100000;
DECLARE
a number(2) ;
BEGIN
FOR a IN REVERSE 10 .. 20 LOOP
dbms_output.put_line('value of a: ' || a);
END LOOP;
END;
/
当上述代码在SQL提示符下执行时,它会产生以下结果 -