oracle循环语句Loop
? 循环语句
① 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])
?