FOR(整数变体)语句 (PL/SQL)

使用 FOR 语句来多次执行一组 SQL 语句。

调用

可以在 PL/SQL 过程、函数或匿名块语句中嵌入此语句。

权限

调用 FOR 语句不需要任何特权;但是,此语句的授权标识必须拥有调用 FOR 语句中嵌入的 SQL 语句所必需的特权。

语法

阅读语法图跳过直观语法图FOR 整数变量INREVERSE 表达式 1..表达式 2LOOPstatementEND LOOP

描述

整数变量
自动定义的整数变量,在循环处理期间,将使用此变量。整数变量 的初始值是 表达式 1。在初始迭代之后,整数变量 的值将在后续每次迭代开始时递增。进入循环时,将对 表达式 1表达式 2 进行求值,当 整数变量 等于 表达式 2 时,循环处理停止。
IN
引入可选的 REVERSE 关键字和表达式,它们定义循环的整数变量的范围。
REVERSE
指定迭代方向是从 表达式 2表达式 1。注意,无论是否指定了 REVERSE 关键字,表达式 2 的值都必须大于 表达式 1,这样才会处理循环中的语句。
表达式 1
指定循环的整数变量范围的初始值。如果指定了 REVERSE 关键字,那么 表达式 1 指定循环的整数变量范围的结束值。
表达式 2
指定循环的整数变量范围的结束值。如果指定了 REVERSE 关键字,那么 表达式 2 指定循环的整数变量范围的初始值。
statement
指定每次处理循环时执行的 PL/SQL 和 SQL 语句。

示例

以下示例演示匿名块中的基本 FOR 语句:
BEGIN      
  FOR i IN 1 .. 10 LOOP
    DBMS_OUTPUT.PUT_LINE('Iteration # ' || i);
  END LOOP;
END;
此示例生成以下输出:
Iteration # 1
Iteration # 2
Iteration # 3
Iteration # 4
Iteration # 5
Iteration # 6
Iteration # 7
Iteration # 8
Iteration # 9
Iteration # 10
如果起始值大于结束值,那么完全不执行循环体,但不会返回错误,如以下示例所示:
BEGIN      
  FOR i IN 10 .. 1 LOOP
    DBMS_OUTPUT.PUT_LINE('Iteration # ' || i);
  END LOOP;
END;
此示例不生成输出,这是因为,永远不会执行循环体。
以下示例使用 REVERSE 关键字:
BEGIN      
  FOR i IN REVERSE 1 .. 10 LOOP
    DBMS_OUTPUT.PUT_LINE('Iteration # ' || i);
  END LOOP;
END;
此示例生成以下输出:
Iteration # 10
Iteration # 9
Iteration # 8
Iteration # 7
Iteration # 6
Iteration # 5
Iteration # 4
Iteration # 3
Iteration # 2
Iteration # 1