PL/SQL - FOR LOOP 语句

  • 简述

    FOR LOOP 是一种重复控制结构,可让您高效地编写需要执行特定次数的循环。
  • 句法

    
    FOR counter IN initial_value .. final_value LOOP 
       sequence_of_statements; 
    END LOOP;
    
    以下是控制流程 For Loop
    • 首先执行初始步骤,并且仅执行一次。此步骤允许您声明和初始化任何循环控制变量。
    • 接下来,评估条件,即initial_value .. final_value。如果为 TRUE,则执行循环体。如果为 FALSE,则循环体不执行,控制流跳转到 for 循环之后的下一条语句。
    • 在 for 循环体执行后,计数器变量的值会增加或减少。
    • 现在再次评估条件。如果为 TRUE,则循环执行并且过程自身重复(循环体,然后递增步骤,然后再次条件)。在条件变为 FALSE 后,FOR-LOOP 终止。
    以下是 PL/SQL for 循环的一些特殊特性 -
    • 循环变量或计数器的initial_valuefinal_value可以是文字、变量或表达式,但必须计算为数字。否则,PL/SQL 会引发预定义的异常 VALUE_ERROR。
    • initial_value不必是1; 然而loop counter increment (or decrement) must be 1.
    • PL/SQL 允许在运行时动态确定循环范围。
  • 例子

    
    DECLARE 
       a number(2); 
    BEGIN 
       FOR a in 10 .. 20 LOOP 
          dbms_output.put_line('value of a: ' || a); 
      END LOOP; 
    END; 
    /
    
    在 SQL 提示符下执行上述代码时,会产生以下结果 -
    
    value of a: 10 
    value of a: 11 
    value of a: 12 
    value of a: 13 
    value of a: 14 
    value of a: 15 
    value of a: 16 
    value of a: 17 
    value of a: 18 
    value of a: 19 
    value of a: 20  
    PL/SQL procedure successfully completed. 
    
  • 反向 FOR LOOP 语句

    默认情况下,迭代是从初始值到最终值,一般是从下界向上到上界。您可以使用以下命令颠倒此顺序REVERSE关键词。在这种情况下,迭代以另一种方式进行。每次迭代后,循环计数器递减。
    但是,您必须按升序(而不是降序)编写范围边界。以下程序说明了这一点 -
    
    DECLARE 
       a number(2) ; 
    BEGIN 
       FOR a IN REVERSE 10 .. 20 LOOP 
          dbms_output.put_line('value of a: ' || a); 
       END LOOP; 
    END; 
    /
    
    在 SQL 提示符下执行上述代码时,会产生以下结果 -
    
    value of a: 20 
    value of a: 19 
    value of a: 18 
    value of a: 17 
    value of a: 16 
    value of a: 15 
    value of a: 14 
    value of a: 13 
    value of a: 12 
    value of a: 11 
    value of a: 10  
    PL/SQL procedure successfully completed.