Oracle PL/SQL FOR LOOP 示例

⚡ 智能摘要

Oracle PL/SQL FOR 循环会在给定的上下限之间执行一段代码块指定次数。循环变量是隐式声明的,并且会自增,因此无需手动计数。REVERSE 关键字允许循环向下计数。

  • 🔢 适用人群: FOR 循环适用于已知的迭代次数,而不是开放式的条件。
  • 📏 测量范围: 循环运行的次数由下限和上限决定。
  • ⚙️ 隐式计数器: 循环变量会自动声明并自动递增。
  • 🎯 范围: 循环变量仅存在于循环内部。
  • 🔄 撤销: 在下限之前添加 REVERSE 会使循环计数递减。
  • 🪜 嵌套: 循环可以嵌套,内层循环在每次外层迭代时都会完全运行。
  • 🚪 自动退出: 当变量离开指定范围时,循环会自动结束。

Oracle PL/SQL For 循环

什么是 FOR 循环?

当您想要执行代码的次数是已知的,而不是基于其他条件时,“FOR LOOP”语句是最佳选择。

在这个循环中,指定了一个下限和一个上限,只要循环变量在这个范围内,循环就会执行。

循环变量是自增的,因此无需显式递增操作。循环变量无需声明,因为它已隐式声明。

FOR <loop_variable> in <lower_limit> .. <higher_limit>
LOOP
<execution block starts>
.
.
.
<execution_block_ends>
END LOOP;

语法解释:

  • 关键字“FOR”表示循环的开始,“END LOOP”表示循环的结束。
  • 每次执行执行部分之前,都会对循环变量进行求值。
  • 执行块包含所有需要运行的代码,并且可以包含任何可执行语句。
  • loop_variable 在循环执行期间隐式声明,其作用域仅限于循环内部。
  • 当循环变量超出范围时,控制流退出循环。
  • 通过在 lower_limit 前添加关键字 'REVERSE',可以使循环按相反的顺序运行。

例如1: 在这个例子中,我们使用 FOR 循环语句打印 1 到 5 之间的数字。

FOR循环打印数字1到5

BEGIN
dbms_output.put_line('Program started.');
FOR a IN 1 .. 5
LOOP
dbms_output.put_line(a);
END LOOP;
dbms_output.put_line('Program completed.');
END;
/

Code 说明:

  • Code 第2行: 打印语句“程序已启动”。
  • Code 第3行: 关键字“FOR”标志着循环的开始,循环变量“a”被声明。它现在取值范围为1到5。
  • Code 第5行: 打印“a”的值。
  • Code 第6行: 关键字“END LOOP”标志着执行块的结束。
  • 第 5 行继续执行,直到“a”达到值 6,此时条件不成立,控制退出循环。
  • Code 第7行: 打印“程序完成”的声明。

嵌套循环

循环语句也可以嵌套。外层循环和内层循环可以是不同类型的循环。在嵌套循环中,外层循环每次迭代时,内层循环都会完全执行一遍。

嵌套循环结构

LOOP --outer
<execution block starts>
LOOP --inner
<execution_part>
END LOOP;
<execution_block_ends>
END LOOP;

语法解释:

  • 外层环内还有一层环。
  • 循环可以是任何类型,执行功能都相同。

例如1: 在这个例子中,我们使用 FOR 循环语句打印从 1 到 3 的数字。每个数字打印的次数与其值相同。

嵌套 FOR 循环示例(第一部分)

嵌套 FOR 循环示例(第一部分)

DECLARE
b NUMBER;
BEGIN
dbms_output.put_line('Program started');
FOR a IN 1..3
LOOP
b:= 1;
WHILE (a>=b)
LOOP
dbms_output.put_line(a);
b:= b+1;
END LOOP;
END LOOP;
dbms_output.put_line('Program completed');
END;
/

Code 说明:

  • Code 第2行: 将变量“b”声明为“NUMBER”数据类型。
  • Code 第4行: 打印语句“程序已启动”。
  • Code 第5行: 关键字“FOR”标志着循环的开始,循环变量“a”被声明。它现在取值范围为1到3。
  • Code 第7行: 每次将“b”的值重置为“1”。
  • Code 第8行: 内在 while循环 检查条件 a>=b。
  • Code 第10行: 只要满足上述条件就打印“a”的值。
  • Code 第14行: 打印“程序完成”的声明。

FOR 循环和反向 FOR 循环

默认情况下,FOR 循环从下限向上计数到上限。添加 REVERSE 关键字使其向下计数,同时保持循环结束。ping 极限的顺序相同。下面将两种形式并列展示,以便清楚地说明它们的区别。

产品形态 标题 数值顺序
上升 FOR a IN 1 .. 5 1,2,3,4,5
降序 反向 1..5 5,4,3,2,1

请注意,即使使用 REVERSE 函数,下限值仍然会在上限值之前写入;只有迭代方向会改变。对于预先不知道迭代次数的循环, 基本循环 是更好的选择。

常见问题

不。FOR 循环会隐式声明变量,该变量仅存在于循环内部。在循环外部声明同名变量不会影响循环中使用的变量。

REVERSE 函数使循环从上限值向下迭代到下限值。限值仍然是从低到高写入的;只是访问值的顺序被反转了。

当迭代次数预先已知时(例如在固定范围内),请使用 FOR 循环。当循环需要在满足某个条件时继续进行且迭代次数不固定时,请使用 WHILE 循环。

是的,当基本循环只是简单地在两个固定值之间计数时,AI 可以用 FOR 循环范围替换手动计数和 EXIT 语句,从而简化代码。请确认边界与原始边界一致。

不。循环变量在循环内部是只读的,因此对其进行赋值会引发编译错误。要改变程序流程,请使用单独的变量或使用 EXIT 语句退出循环。

总结一下这篇文章: