【PL/SQL】LOOP処理
今日は、LOOP処理について説明していくぜ。
ゆっくりしていってね。
説明できるの~?
できる・・・よ。
じゃあ、気を取り直して、LOOP処理には以下の3種類があります。
基本LOOP文
DECLARE
I PLS_INTEGER := 0;
BEGIN
--無限ループ(1)
LOOP
NULL;
END LOOP;
--いきなりループを抜ける(2)
LOOP
EXIT;
END LOOP;
--条件を満たしたらループを抜ける(3)
LOOP
EXIT WHEN I = 2;
I := I + 1;
END LOOP;
END;
(1)は回り続けるぜ。
(2)は「EXIT」でいきなり抜けるから意味ないぜ。
(3)は「WHEN」の後に記述した条件がTRUEになったら「EXIT」するぜ。
カーソルのFETCHと組み合わせてよく使います。
「EXIT」忘れたら、大変な事になるじゃない!
FOR-LOOP文
DECLARE
VAL PLS_INTEGER := 0;
BEGIN
FOR I IN 1..9 --(1)
LOOP
VAL := VAL + I; --1から9
END LOOP;
FOR J IN REVERSE 1..9 --(2)
LOOP
VAL := VAL + J; --9から1
END LOOP;
END;
(1)は、1・2・3・4・5・6・7・8・9 の順番で処理するぜ。
(2)は、9・8・7・6・5・4・3・2・1 の順番で処理するぜ。
ループカウンタの参照はFORの後の
(1)だと「I」、(2)だと「J」です。
ループカウンタはFOR文の中だけで使えます。
基本LOOP文より解り易いわね。
WHILE-LOOP文
DECLARE
VAL PLS_INTEGER := 0;
BEGIN
WHILE VAL < 5
LOOP
VAL := VAL + 1;
END LOOP;
END;
WHILEの後に記述した条件がTRUEの間、回り続けるぜ。
FOR文と違って、ループカウンタは自前で宣言するので
WHILE文の内でも外でも参照できます。
ループカウンタがどこでも参照できるから便利ね。
でも調子にのってると、訳が分からなくなるパターンねw
まとめ
用途に合わせて好きなLOOPを使ってくれだぜ。
なんでドヤ顔なのよ。
ちゃんと締めてよ。
わかってるよ。
PL/SQLはテーブルから参照したデータを扱う事が多いから、カーソルのOPENと基本LOOP文の組み合わせで使うのが多いぜ。
他にも「CONTINUE」とか「ラベル」とかあるけど、また今度。
げっ。まだループ絡みで覚える事があるのね。
準備ができたら連絡ちょうだい。予定を空けとくわ。
またな!