天天看點

oracle loop語,oracle循環話語Loop

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])