Oracle PL/SQL FOR LOOP 示例

什么是 For Loop?

当您想执行一段代码已知次数,而不是基于其他条件时,“FOR LOOP”语句最为合适。

在此循环中,将指定下限和上限,只要循环变量在此范围内,循环就会执行。

循环变量是自增的,因此在此循环中不需要显式的增量操作。循环变量不需要声明,因为它会自动声明。

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

语法说明

  • 在上述语法中,关键字“FOR”标记循环的开始,“END LOOP”标记循环的结束。
  • 循环变量在每次执行执行部分之前都会进行评估。
  • 执行块包含所有需要执行的代码。执行部分可以包含任何执行语句。
  • loop_variable 在整个循环执行期间隐式声明,并且该 loop_variable 的作用域仅限于此循环内部。
  • 如果循环变量超出了范围,则控制将退出循环。
  • 通过在 lower_limit 前面添加关键字“REVERSE”,可以使循环以反向顺序工作。

示例 1:在此示例中,我们将使用 FOR 循环语句打印从 1 到 5 的数字。为此,我们将执行以下代码。

Oracle PL/SQL FOR LOOP

BEGIN
dbms Qutput.put linef.Prp.gram started.' );
FOR a IN 1 .. 5
LOOP
dbms_output.put_line(a);
END LOOP:
dbms_output.put_iine('Program completed.'); 
END;
/

代码解释

  • 代码行 2:打印语句“程序已启动”。
  • 代码行 3:关键字“FOR”标记循环的开始,并声明了循环变量“a”。现在它将具有从 1 到 5 的值。
  • 代码行 5:打印“a”的值。
  • 代码行 6:关键字“END LOOP”标记执行块的结束。
  • 从第 5 行开始的代码将继续执行,直到“a”达到 6,因为条件将失败,控制将退出循环。
  • 代码行 7:打印语句“程序已完成”

嵌套循环

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

Nested Loops

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

语法说明

  • 在上述语法中,外层循环内还有一个循环。
  • 循环可以是任何类型,执行功能部分是相同的。

示例 1:在此示例中,我们将使用 FOR 循环语句打印从 1 到 3 的数字。每个数字将打印为其值的次数。为此,我们将执行以下代码。

Nested Loops

Nested Loops

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;
/

代码解释

  • 代码行 2:“b”变量声明为“NUMBER”数据类型。
  • 代码行 4:打印语句“程序已开始”。
  • 代码行 5:关键字“FOR”标记循环的开始,并声明了循环变量“a”。现在它将具有从 1 到 3 的值。
  • 代码行 7:每次将“b”的值重置为“1”。
  • 代码行 8:内部 while 循环 检查条件 a>=b。
  • 代码行 10:只要满足上述条件,就打印“a”的值。
  • 代码行 14:打印语句“程序已完成”

摘要

循环 FOR 循环
退出条件 计数器达到限制时退出
用途 当已知循环执行次数时,使用此方法效果很好。