oracle循環語句

編寫循環控制結構時,用戶可以使用基本循環,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)則用於標記嵌套塊或嵌套循環,通過在嵌套循環中使用標號,可以區分內層循環和外層循環,並且可以在內層循環中直接退出外層循環,在編寫時可以用<>定義標號。示例:

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時只會退出內層循環。

發佈了57 篇原創文章 · 獲贊 12 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章