プロが教える店舗&オフィスのセキュリティ対策術

こんにちは。
PL/SQLで下記のようなFORループを
2重3重に処理することはできないのでしょうか?

コンパイル時に
PLS-00103: 記号"END"が見つかりました
と、内ループの"END"に対して起こられてしまいます。

お分かりになる方、よろしくお願いします。


<<L_OUT>>
FOR data_a IN csr_a LOOP
 …
<<L_IN>>
FOR data_b IN csr_b LOOP
 END LOOP L_IN;
 …
END LOOP L_OUT;

A 回答 (4件)

カーソルのOPEN/CLOSEを明示するなら、問題はないと思います。



しかしながら、csr_a,csr_bを結合した1つのカーソルの
読み出しに変えた方が、より効率的かと思います。
    • good
    • 0
この回答へのお礼

ご回答有難うございました。
問題点はほかにあったようで、
いろいろと修正しているうちに、問題は解決しました。

お礼日時:2004/12/17 23:35

こんにちは。



LOOP文のネストは問題ありませんよ。
全体をコピペして載せて頂いた方がいいかと思いますが・・・?
(^^ゞ
    • good
    • 1
この回答へのお礼

ご回答有難うございました。
問題点はほかにあったようで、
いろいろと修正しているうちに、問題は解決しました。

お礼日時:2004/12/17 23:34

半分くらい、トンチンカンなことを書くと思いますが、ご容赦ください。



可能性として、
・ENDが全角文字になっている
・ENDの直前の文に「;」がついていない
・必要ないENDがどこかに存在する
ということを考えました。

全く確認などしていませんし、多分違うと思いますが、
いろいろ考える選択肢があった方がいいと思って書き込みました。

ロジック的には、ループの中で、さらにループを作っても問題はないと思います。(多分)
    • good
    • 0
この回答へのお礼

ご回答有難うございました。
問題点はほかにあったようで、
いろいろと修正しているうちに、問題は解決しました。

お礼日時:2004/12/17 23:34

文法云々より、考え方に問題があるような気がします。



外側のFORループのカーソルcsr_aで得られるレコード数分、
内側のFORループのカーソルcsr_bを読み直すということに
なりますが、それがお望みなのですか?

この回答への補足

csr_aで取得したレコードをcsr_bのwhere句の変数にしているので、ロジック的な問題はありません。

FORループの入れ子にではなくて、
外はFORループで、
内をOPEN/FETCH/CLOSEと通常の書き方にしたら
うまくいくのでしょうか?
(明日、会社へ行くまでちょっと試せないのですが・・・)

補足日時:2004/12/17 01:39
    • good
    • 2

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

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A