プロが教えるわが家の防犯対策術!

PL/SQLでFor文を複数使用したデータ作成プログラムを作っています。
作成したデータが一定数に達したら全てのFor文を抜ける処理を
入れたいのですが、うまくいきません。
VBのExit Functionなどのように複数のFor文を一気に抜けるやり方は
PL/SQLにはあるのでしょうか?

ソース---------------------------------------------------------
(中略)
   StrCnt := 1;
   For i IN 1..3 LOOP
      StrA := "あ"
      For j IN 1..3 LOOP
         StrB := "い"
         For k IN 1..3 LOOP
            StrC := "う"
            outputStr := StrA || StrB || StrC ;
            DBMS_OUTPUT.PUT_LINE (outputStr) ;
            StrCnt := StrCnt + 1 ;
            
            --もしStrCntが5つ作成されればデータ作成を中断
            IF StrCnt > 5 THEN
                ※ここで全てのループを解除したい
            END IF;

         EXIT LOOP;
      EXIT LOOP;
   EXIT LOOP;
(後略)
---------------------------------------------------------------

環境は
 【OS】Window2000 Pro
 【Oracle】8.1.6       です。
Oracleを始めて一週間足らずの未熟者なので、ソース自体が違うかもしれませんが、
どなたかご存知の方、教えてください!

A 回答 (1件)

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

この回答への補足

すみません、よくよく見直したらIF文の条件がおかしかったです。
"IF StrNo = 6 THEN"ではなく、"IF (StrNo >= 6) THEN"にしたら
考えていた動きをしてくれました。

今度からはもっとよく考えてから質問します。
ありがとうございました!!

補足日時:2002/12/05 19:38
    • good
    • 1
この回答へのお礼

回答ありがとうございます。
早速試してみましたが、ループは一つしか抜けていないようです。
--------------------------------------------------------------------
   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):="い" ・・・といった具合に
一文字ずつ文字データが入っています。

他に方法があるようでしたら教えてください。よろしくお願いします。

お礼日時:2002/12/05 19:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!