While 循环 Oracle PL/SQL 示例
⚡ 智能摘要
Oracle PL/SQL WHILE 循环会在条件为真时重复执行一段代码。它是一个入口检查循环,每次迭代前都会检查退出条件,因此代码块可能执行零次,并且不需要显式的 EXIT 关键字。

什么是PL/SQL While循环?
此 While循环 在 PL/SQL 中,循环语句的工作方式与基本循环语句类似,区别在于其退出条件位于循环的开头。它类似于入口检查循环,只有当条件满足时,执行块才会运行,因为在执行之前会先检查退出条件。
它不需要显式地使用“EXIT”关键字来退出循环,因为它每次都会隐式地验证条件。
PL/SQL While 循环语法
WHILE <EXIT condition> LOOP <execution block starts> . . . <execution_block_ends> END LOOP;
- 关键字“WHILE”表示循环的开始,“END LOOP”表示循环的结束。
- 每次执行部分开始执行之前,都会对退出条件进行评估。
- 执行块包含所有需要运行的代码。
- 执行部分可以包含任何可执行语句。
示例 Oracle PL/SQL While 循环
在这个例子中,我们使用 WHILE 循环语句打印 1 到 5 之间的数字。

DECLARE a NUMBER := 1; BEGIN dbms_output.put_line('Program started'); WHILE (a <= 5) LOOP dbms_output.put_line(a); a:= a+1; END LOOP; dbms_output.put_line('Program completed'); END; /
Code 说明:
- Code 第2行: 声明变量“a”为“NUMBER”类型,并将其初始化为值“1”。
- Code 第4行: 打印语句“程序已启动”。
- Code 第5行: 关键字“WHILE”标记循环的开始,并检查“a”的值是否小于或等于5。
- Code 第7行: 打印“a”的值。
- Code 第8行: 将'a'的值加1。
- Code 第9行: 关键字“END LOOP”标志着执行块的结束。
- 第 7 行和第 8 行继续执行,直到 'a' 的值达到 6,此时条件返回 FALSE,控制流退出。 循环.
- Code 第10行: 打印“程序完成”的声明。
WHILE 循环、FOR 循环和基本循环
PL/SQL 提供了三种循环类型,选择合适的循环类型可以保持代码清晰。WHILE 循环适用于条件驱动的重复执行,而其他两种循环则适用于固定计数或显式控制的退出。
| 循环 | 退出标准 | 最佳使用时机 |
|---|---|---|
| WHILE 循环 | 顶部条件变为假 | 迭代次数未知。 |
| FOR循环 | 计数器到达范围末端 | 迭代次数已知 |
| 基本循环 | 在代码块中显式地使用 EXIT 语句 | 出口由人工控制。 |
由于 WHILE 循环在顶部检查其条件,如果条件从一开始就为假,则循环体可能执行零次。这与基本循环的主要区别在于,基本循环的循环体始终至少执行一次。
避免无限循环
WHILE 循环完全依赖于控制变量向退出条件移动。如果它始终不向退出条件移动,循环就会无限运行,导致会话挂起。以下三个习惯可以避免这种情况:
- 每次迭代都改变计数器。 示例中,循环内部递增了“a”的值;删除该行代码会导致无限循环。
- 测试边界。 确认该条件对于初始值实际上可能变为假,而不仅仅是对于理想情况。
- 添加安全出口。 对于数据驱动循环,当达到最大迭代次数时,使用 EXIT WHEN 可以防止出现意外值。
当重复次数确实固定时,FOR 循环可以完全消除风险,因为它的计数器是自动管理的。
