【PL/SQL】LOOP処理

2020年9月21日

魔理沙
魔理沙

今日は、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」とか「ラベル」とかあるけど、また今度。

げっ。まだループ絡みで覚える事があるのね。

準備ができたら連絡ちょうだい。予定を空けとくわ。

霊夢
霊夢
魔理沙
魔理沙

またな!

【PL/SQL】メニュー

サイトマップ

2020年9月21日Oracle,PL/SQL,データベース,プログラム

Posted by こっぷ