• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PL/SQLで複数のFor文を解除したい)

PL/SQLで複数のFor文を解除する方法

このQ&Aのポイント
  • PL/SQLでFor文を複数使用したデータ作成プログラムを作っています。作成したデータが一定数に達したら全てのFor文を抜ける処理を入れたいのですが、うまくいきません。
  • VBのExit Functionなどのように複数のFor文を一気に抜けるやり方はPL/SQLにはあるのでしょうか?
  • Oracleを始めて一週間足らずの未熟者なので、ソース自体が違うかもしれませんが、どなたかご存知の方、教えてください!

質問者が選んだベストアンサー

  • ベストアンサー
  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

EXIT で試してみてください。

lovelypooh
質問者

お礼

回答ありがとうございます。 早速試してみましたが、ループは一つしか抜けていないようです。 --------------------------------------------------------------------    StrNo :=1;       FOR Cnt1 IN 1 .. 4 LOOP          Str1 := StrArray(Cnt1);          FOR Cnt2 IN 1 .. 4 LOOP             Str2 := StrArray(Cnt2);             FOR Cnt3 IN 1 .. 4 LOOP                Str3 := StrArray(Cnt3);                OutStr := Str1 || Str2 || Str3;                StrNo := StrNo + 1;                IF StrNo = 6 THEN                   DBMS_OUTPUT.PUT_LINE ('5件作成したので終了');                   EXIT;                END IF;            END LOOP;          END LOOP;       END LOOP;    END; / -------------------------------------------------------------------- 以上をSQL*PLUSで実行すると "5件作成したので終了"と一行だけ表示されますが、 Select count(*)で件数を確認すると61件のデータが作成されています。 strArray()には strArray(1):="あ"、strArray(2):="い" ・・・といった具合に 一文字ずつ文字データが入っています。 他に方法があるようでしたら教えてください。よろしくお願いします。

lovelypooh
質問者

補足

すみません、よくよく見直したらIF文の条件がおかしかったです。 "IF StrNo = 6 THEN"ではなく、"IF (StrNo >= 6) THEN"にしたら 考えていた動きをしてくれました。 今度からはもっとよく考えてから質問します。 ありがとうございました!!