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;
05-11 17:51