• PL/SQL 循环语句


    1、基本 LOOP 循环语句

    语法:

    LOOP 
       语句序列; 
    END LOOP;
    
    其中,语句序列中需要一个EXIT语句或一个EXIT WHEN语句来中断循环。

    实例:

    DECLARE 
       x number(2) := 10; 
    BEGIN 
       LOOP 
          dbms_output.put_line(x); 
          x := x + 10; 
          IF x > 50 THEN 
             exit; 
          END IF; 
       END LOOP; 
       dbms_output.put_line('LOOP结束: ' || x); 
    END;
    或者

    使用EXIT WHEN语句来代替EXIT语句:
    DECLARE 
       x number(2) := 10; 
    BEGIN 
       LOOP 
          dbms_output.put_line(x); 
          x := x + 10; 
          EXIT WHEN x > 50; 
       END LOOP; 
       dbms_output.put_line('LOOP结束: ' || x); 
    END;

    2、WHILE LOOP 语句

    语法:

    WHILE 条件 LOOP 
       语句序列; 
    END LOOP;

    实例:

    DECLARE 
       x number(2) := 10; 
    BEGIN 
       WHILE x < 20 LOOP 
          dbms_output.put_line(x); 
          x := x + 1; 
       END LOOP; 
    END;

    3、FOR LOOP 语句

    语法:

    FOR counter IN initial_value .. final_value LOOP 
       语句序列; 
    END LOOP;
    
    说明:
       循环变量或计数器的initial_value和final_value可以是文字,变量或表达式,但必须对数字求值。 否则,PL/SQL引发预定义的异常VALUE_ERROR;
       initial_value不必为1; 但是,循环计数器增量(或减量)必须为1;
       PL/SQL允许在运行时动态地确定循环范围。

    实例:

    DECLARE 
       x number(2); 
    BEGIN 
       FOR x IN 10 .. 20 LOOP 
          dbms_output.put_line(x); 
      END LOOP; 
    END; 
    
    输出结果:
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20

    反转FOR LOOP语句:
    
    DECLARE 
       x number(2) ; 
    BEGIN 
       FOR x IN REVERSE 10 .. 20 LOOP 
          dbms_output.put_line(x); 
       END LOOP; 
    END; 
    
    输出结果:
    20
    19
    18
    17
    16
    15
    14
    13
    12
    11
    10

    注:可在任何其他基本循环中使用一个或多个循环,如:whilefor循环。

    4、标记PL/SQL循环

    标签使用双尖括号(<<>>)括起来,并显示在LOOP语句的开头。标签名称也可以出现在LOOP语句的末尾。

    实例:

    实例1:
    DECLARE 
       i number(1); 
       j number(1); 
    BEGIN 
       << outer_loop >> 
       FOR i IN 1..3 LOOP 
          << inner_loop >> 
          FOR j IN 1..3 LOOP 
             dbms_output.put_line('i = '|| i || ', j = ' || j); 
          END loop inner_loop; 
       END LOOP outer_loop; 
    END;
    
    实例2:
    DECLARE 
       x number(2) := 0; 
    BEGIN 
       << mark_loop >>
       x := x + 1;
       IF x < 10 THEN
         dbms_output.put_line(x);
         GOTO mark_loop;
       END IF;
    END;
  • 相关阅读:
    分享15个Linux 实用技巧,提高工作效率
    隐藏搜索框:CSS 动画正反向序列
    js检测开发者工具是否打开,防止别人恶意调试我们的代码
    Js实现元素右滑回弹效果(基于Uniapp)
    css ::marker伪元素,修改li的项目符号颜色,字号字体
    Jump Game II
    Google 面经 09/26
    Word Search
    Remove Duplicates from Sorted List
    Remove Duplicates from Sorted List II
  • 原文地址:https://www.cnblogs.com/Jimc/p/9540901.html
Copyright © 2020-2023  润新知