Oracle迴圈語句

來源:互聯網
上載者:User

編寫迴圈控制結構時,使用者可以使用基本迴圈,WHILE迴圈和FOR迴圈等三種類型的迴圈語句,下面分別介紹使用這三種迴圈語句的方法。

1.基本迴圈

LOOP

         statement1;

         ......

          EXIT [WHEN condition];

END LOOP;

當使用基本迴圈時,無論是否滿足條件,語句至少會被執行一次,當condition為TRUE時,會退出迴圈,並執行END LOOP後的相應操作。當編寫基本迴圈時一定要包含EXIT語句,否則會陷入死迴圈。另外還應該定義迴圈控制變數,並且在迴圈體內修改迴圈控制變數的值。樣本:

SQL> declare
  2  i int:=1;
  3  begin
  4  loop
  5  insert into testloop values(i);
  6  exit when i=10;
  7  i:=i+1;
  8  end loop;
  9  end;
10  /

2.WHILE迴圈

基本迴圈至少要執行一次迴圈體內的語句,而對於WHILE迴圈來說,只有條件為TRUE時,才會執行迴圈體內的語句。WHILE迴圈以WHILE ...LOOP開始,以END LOOP結束。

WHILE condition LOOP

           statement1;

           statement2;

           .....

END LOOP;

當condition為TRUE時,執行迴圈體內的語句,而當condition為FALSE或NULL時,會退出迴圈,並執行END LOOP後的語句。當使用WHILE迴圈時,應該定義迴圈控制變數,並在迴圈體內改變迴圈控制變數的值。樣本:

SQL> declare
  2  i int:=1;
  3  begin
  4  while i<=10 loop
  5  insert into testloop values(i);
  6  i:=i+1;
  7  end loop;
  8  end;
  9  /

3.FOR迴圈

當使用基本迴圈或WHILE迴圈時,需要定義迴圈控制變數,並且迴圈控制變數不僅可以使用NUMBER類型,也可以使用其他資料類型。當使用FOR迴圈時,ORACLE會隱含定義迴圈控制變數。

FOR counter in [REVERSE] lower_bound. .upper_bound LOOP

         statement1;

         statement2;

         .......

END LOOP;

counter是迴圈控制變數,並且該變數由oracle隱含定義,不需要顯式定義。lower_bound和upper_bound分別對應於迴圈控制變數的下界值和上界值,預設情況下,當使用FOR迴圈時,每次迴圈時迴圈控制變數會自動增1.如果指定REVERSE選項,那麼每次迴圈時迴圈控制變數會自動減1。樣本:

SQL> begin
  2  for i in reverse 1..10 loop
  3  insert into testloop values(i);
  4  end loop;
  5  end;

4.嵌套迴圈和標號

嵌套迴圈是指在一個迴圈語句之中嵌入另一個迴圈語句,而標號(label)則用於標記嵌套塊或嵌套迴圈,通過在嵌套迴圈中使用標號,可以區分內層迴圈和外層迴圈,並且可以在內層迴圈中直接退出外層迴圈,在編寫時可以用<<label_name>>定義標號。樣本:

SQL> declare
  2  result int;
  3  begin
  4  <<outer>>
  5  for i in 1..100 loop
  6  <<inter>>
  7  for j in 1..100 loop
  8  result:=i*j;
  9  exit outer when result=1000;
10  exit when result=500;
11  end loop inter;
12  dbms_output.put_line(result);
13  end loop outer;
14  dbms_output.put_line(result);
15  end;
16  /

當執行以上PL/SQL塊時,如果result=1000,那麼直接退出外層迴圈,而result=500時只會退出內層迴圈。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.