Oracle PL/SQL FOR LOOP 示例
什么是 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 在整个循环执行过程中被隐式声明,并且这个 loop_variable 的作用域只会在本次循环内部。
- 如果循环变量超出范围,则控制将退出循环。
- 通过在 lower_limit 之前添加关键字“REVERSE”,可以使循环以相反的顺序工作。
例子1:在此示例中,我们将使用 FOR 循环语句打印从 1 到 5 的数字。为此,我们将执行以下代码。
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 行: 打印“程序完成”声明
嵌套循环
循环语句也可以嵌套。外循环和内循环可以是不同类型的。在嵌套循环中,对于外循环的每一个迭代值,内循环都会完全执行。
LOOP -outer <execution block starts> LOOP — inner <execution_part> END LOOP; <execution_block_ends> END LOOP;
语法解释:
- 在上面的语法中,外层循环内部还有一个循环。
- 循环可以是任意类型,并且执行功能部分是相同的。
例子1:在此示例中,我们将使用 FOR 循环语句打印从 1 到 3 的数字。每个数字将打印与其值一样多的次数。为此,我们将执行以下代码。
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 循环 |
---|---|
退出标准 | 当计数器达到限制时退出 |
用法 | 当知道要执行的循环计数时很适合使用。 |