Oracle 循环执行语句
时间: 2024-12-29 16:14:49 浏览: 8
### Oracle PL/SQL 循环执行语句
#### 使用 `FOR` 循环遍历数据集
在PL/SQL中,可以使用`FOR`循环来简化游标的处理过程。这种类型的循环非常适合用于需要迭代一组记录的情况。
```plsql
DECLARE
CURSOR emp_cursor IS
SELECT employee_id, first_name, last_name FROM employees;
BEGIN
FOR emp_record IN emp_cursor LOOP
DBMS_OUTPUT.PUT_LINE(
'Employee ID: ' || emp_record.employee_id ||
', Name: ' || emp_record.first_name || ' ' || emp_record.last_name);
END LOOP;
END;
/
```
此代码段展示了如何定义一个显式游标并利用`FOR`循环自动打开、获取和关闭它[^3]。
#### 基本的 `LOOP...EXIT WHEN` 结构
对于更灵活的需求,可以采用普通的`LOOP`配合`EXIT WHEN`条件来进行控制流管理:
```plsql
DECLARE
counter NUMBER := 0;
BEGIN
LOOP
EXIT WHEN counter >= 5; -- 当计数达到或超过5时退出循环
DBMS_OUTPUT.PUT_LINE('Counter value is now: ' || TO_CHAR(counter));
counter := counter + 1;
END LOOP;
DBMS_OUTPUT.PUT_LINE('Loop has ended.');
END;
/
```
这段脚本通过不断更新变量`counter`并在每次迭代前检查终止条件实现了简单的计数逻辑。
#### 利用 `WHILE` 实现基于条件判断的重复操作
当希望依据特定条件下持续运行某段程序直到不再满足该条件为止,则可选用`WHILE`循环:
```plsql
DECLARE
num NUMBER(2) := 0;
BEGIN
WHILE (num < 7) LOOP
IF MOD(num, 2) = 0 THEN
DBMS_OUTPUT.PUT_LINE('Even number found:'||TO_CHAR(num));
ELSE
DBMS_OUTPUT.PUT_LINE('Odd number encountered:'||TO_CHAR(num));
END IF;
num := num + 1;
END LOOP;
END;
/
```
这里展示了一个例子,在其中根据数值奇偶性输出不同的消息,并且只要`num`小于7就会一直保持循环下去。
阅读全文