PL/SQL for循环
FOR LOOP语句是一种重复控制结构,可以有效地编写一个需要执行特定次数的循环。
语法
下面演示如何使用FOR LOOP语句 -
FOR counter IN initial_value .. final_value LOOP
sequence_of_statements;
END LOOP;
SQL
以下是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
当上述代码在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
当上述代码在SQL提示符下执行时,它会产生以下结果 -