循环语句
① LOOP循环(基本循环):
LOOP
.......
END LOOP;
两种退出方式:IF.....EXIT EXIT.....WHEN.......
例如:
DECLARE
x number:=0 ;
BEGIN
LOOP
IF x>=3 THEN
EXIT;
END IF;
x:=x+1;
DBMS_OUTPUT.PUT_LINE('循环内部x的值为:'||x);
END LOOP;
DBMS_OUTPUT.PUT_LINE('循环外部x的值为:'||x);
END;
其中,
IF x>=3 THEN EXIT;
END IF;
<==> EXIT WHEN x>=3;
② WHILE循环:
WHILE expression LOOP
.........
END LOOP;
例如:
DECLARE
x number:=0 ;
BEGIN
WHILE x<=3 LOOP
x:=x+1;
DBMS_OUTPUT.PUT_LINE('循环内部x的值为:'||x);
END LOOP;
DBMS_OUTPUT.PUT_LINE('循环外部x的值为:'||x);
END;
③ FOR循环:
FOR counter IN[REVERSE] start_value ..end_value LOOP
...............
END LOOP;
FOR循环内的计数器不需要申明,计数器默认为递增,加REVERSE后为递减
例如:
BEGIN
FOR i IN 1..5 LOOP --计数器 i 未显示申明,i为number类型
DBMS_OUTPUT.PUT_LINE('i='||i);
END LOOP;
END;
输出:1 2 3 4 5
蓝色部分改成FOR i IN REVERSE 1..5 LOOP,输出 5 4 3 2 1
FOR循环的步长只能是1和-1,不能是其他值,并且循环内部不能对计数器赋值, start_value和end_value可以是变量
例如,下面这段代码试图在循环内部对计数器赋值,结果出现“必须申明标识符I”
BEGIN
FOR counter IN 1..5 LOOP
DBMS_OUTPUT.PUT_LINE(counter);
i:=i+1;
END LOOP;
END;
④ 标记+GOTO实现循环
标记名用<<>>括起来,不是书名号
例如:
DECLARE
i NUMBER:=0;
BEGIN
<<repeat_loop>>
i:=i+1;
DBMS_OUTPUT.PUT_LINE('i的值为:'||i);
IF i<=3 THEN
GOTO repeat_loop;
END IF;
END;
注意:使用循环时注意不要产生死循环,循环嵌套时可使用标签清晰的指明跳出那一级循环。
(转载请注明出处:[url=http://www.live588.org]淘金盈[/url])