1. 程式人生 > >Oracle的三種迴圈

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迴圈(太基礎)

值得注意的是這些迴圈可以巢狀使用