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
.........
ENDLOOP;
例如:
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
...............
ENDLOOP;
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
<>
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])