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;
原文地址:https://www.cnblogs.com/Jimc/p/9540901.html