DB/Oracle/PLSQL/反復
目次†
反復処理。繰り返し。LOOP、WHILE、FOR。
LOOP 文†
単なるループ。
- LOOP 文
... begin loop -- 繰り返す処理を記述 ... -- exit 文でループを出る exit; -- 終了条件も指定可 exit when ... ; end loop; end;
WHILE 文†
ちょっと高級なループ。
LOOP 文と同じく、EXIT を途中にいれられる。つまるところの BREAK。
- WHILE 文
... begin -- 条件式が TRUE のときはループ while hoge > 10 loop -- 繰り返す処理を記述 ... end loop; end;
FOR 文†
FOR による、カウンタ変数を使ったループ。
インクリメントされる量は 1 で固定。step 2 みたいなことはできない。
カウンタ変数は宣言する必要はない。宣言済み変数と同じ名前のカウンタも利用はできるけれども、内部的には別の変数として扱われる。
これも LOOP 文や WHILE 文と同じく、EXIT を入れられる。
- FOR 文
... begin -- c を 1 から 10 までインクリメントさせて中の処理を繰り返す -- カウンタ変数は宣言不要 for c in 1..10 loop -- 繰り返す処理を記述 ... end loop; -- デクリメントさせるには reverse を指定する for c in reverse 1..10 loop ... end loop; end;
カーソル FOR ループ†
カーソルと組み合わせると、複数行の検索結果に対する FOR EACH 文っぽい動きができる。
詳細は別ページに記述。
ループのネスト†
当たり前だけどネストも可能。
END LOOP にラベルを付加すると、内側のループの終了時に外側のループも終了できる
- ループのネスト
begin -- 単純なネスト loop loop ... exit when ...; end loop; exit when ...; end loop; -- ラベルを利用したネスト <<hoge>> loop loop ... exit when ...; -- 外側のラベルを指定することで対応するループも終了させる end loop hoge; end loop; end;
スキップ†
CONTINUE。ループの途中で処理をやめて、次のループを開始する。
LOOP でも、WHILE でも、FOR でも使える。
- CONTINUE 文
begin loop .... -- 条件を満たしたら以降の処理をせずに次のループを開始する continue when ...; .... end loop; end;
Last-modified: 2011-11-08 (火) 15:39:52