Oracle的三種迴圈
迴圈語句在Oracle中有三種,不常見的是loop,至於for,while迴圈太過基礎,不予解釋
loop(可以為迴圈設定標籤)
注意:
1.goto label_name,設定標籤的語法如下:
<<label_name>>
可以為迴圈設定標籤
2. <<label_name>> 後面不能直接跟EXCEPTION這種關鍵字類的語句,要用NULL把標籤跟關鍵字隔開。類似的關鍵字還有END LOOP之類的,等等。
例項程式碼:
CREATE OR REPLACE PROCEDURE dd IS
i PLS_INTEGER;
BEGIN
i := 0;
LOOP
<<top>> //此處為迴圈設定標籤
i := i + 1;
IF i > 10 THEN
EXIT;
END IF;
IF i > 5 THEN
GOTO top;
END IF;
dbms_output.put_line(i);
END LOOP;
END;
loop迴圈:
<1>while loop迴圈
declare
v_rlt number(8) := -3;
begin
<<fst_loop>>
while(v_rlt < 40 )
loop
dbms_output.put_line('v_rlt = '||v_rlt);
v_rlt := v_rlt + 1;
end loop fst_loop;
dbms_output.put_line('當前迴圈已接結束!');
end;
<2>for in loop迴圈
begin
for v_rlt in -3..3 loop
dbms_output.put_line('v_rlt =' || v_rlt) ;
end loop;
dbms_output.put_line('當前迴圈已結束!');
end;
<3>純loop迴圈
declare
v_rlt number(8) := -3;
begin
<<fst_loop>>
loop
dbms_output.put_line('v_rlt =' || v_rlt);
v_rlt := v_rlt + 1;
exit fst_loop when v_rlt > 3;
end loop;
dbms_output.put_line('當前迴圈已經結束!');
end;
while迴圈(太基礎)
for迴圈(太基礎)
值得注意的是這些迴圈可以巢狀使用