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を始めて一週間足らずの未熟者なので、ソース自体が違うかもしれませんが、
どなたかご存知の方、教えてください!
No.1ベストアンサー
- 回答日時:
EXIT で試してみてください。
この回答への補足
すみません、よくよく見直したらIF文の条件がおかしかったです。
"IF StrNo = 6 THEN"ではなく、"IF (StrNo >= 6) THEN"にしたら
考えていた動きをしてくれました。
今度からはもっとよく考えてから質問します。
ありがとうございました!!
回答ありがとうございます。
早速試してみましたが、ループは一つしか抜けていないようです。
--------------------------------------------------------------------
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):="い" ・・・といった具合に
一文字ずつ文字データが入っています。
他に方法があるようでしたら教えてください。よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) InputBoxでキャンセルボタンを押したらファイル自体を閉じたい 3 2022/07/23 17:52
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 3 2022/06/12 11:17
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- その他(プログラミング・Web制作) 十進BASICでの再帰についての質問です。 2 2022/11/18 09:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
業務用のデータベースサーバー...
-
MS-Accessのエクスポートで異常...
-
ACCESSのデータをWebブラウザで...
-
1回目の実行に3分、2回目の実行...
-
ACCESSのクエリからORACLEのDB...
-
DB2 双方向でのレプリケーショ...
-
accessの上限容量2Gでは容量が...
-
oracleデータベースの更新履歴
-
SQLServerのDBのうちテーブルを...
-
AccessのLANでの共有
-
データのロードの仕方
-
【DB】同じトランザクション内...
-
警察はスマホに保存した動画や...
-
postgresql についてです
-
復旧中のデータベースについて
-
tempdb の適切なサイズ
-
ADO Connection を再利用する方法
-
SQL Server Management Studio ...
-
DATファイルをEXCELで開きたい
-
TPSとは・・・
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESSのデータをWebブラウザで...
-
MS-Accessのエクスポートで異常...
-
1回目の実行に3分、2回目の実行...
-
Sqliteで使えない文字。
-
accessの上限容量2Gでは容量が...
-
ACOSのRDBについて教え...
-
業務用のデータベースサーバー...
-
ACCESS2010 Excelエクスポート ...
-
ACCESSのクエリからORACLEのDB...
-
ツリー情報のデータをSQLで取得...
-
SQLServerのDBのうちテーブルを...
-
SQL ServerにExcelをリンクさせ...
-
oracleデータベースの更新履歴
-
データファイルに書き込まれる...
-
AccessのLANでの共有
-
別サーバーへのデータの同期更...
-
SQLSERVERのテーブルにデータを...
-
暗号化したDBのデータ移行
-
SQL文で、重複データの上書きは...
-
AccessのクエリとExcelの外部デ...
おすすめ情報