1

次のように、一方が他方の中にネストされた2つのカーソルループを含むトリガーがあります。

FOR outer_rec IN outer_cursor
LOOP
  FOR inner_rec IN inner_cursor
  LOOP
     -- Do some calculations
  END LOOP;

END LOOP;

これのどこかで、次のエラーがスローされます。

ORA-01422:正確なフェッチは、要求された数を超える行を返します

私はそれがどこから来ているのかを1時間かそこらで判断しようとしてきましたが、このエラーは決して起こらないのでしょうか?

また..外側のループが次のレコードに進むたびに、内側のループが自動的に閉じて再び開くと想定しています。これが正しいことを願っています。

4

3 に答える 3

1

私が知っていることから、選択ステートメントが複数の行をフェッチするPL/SQLブロックにステートメントORA-01422がある場合にのみトリガーされます。複数の行がフェッチされると、上記の例外が発生しますSELECT...INTOSELECT..INTO

于 2010-06-14T21:20:17.820 に答える
0

値に対してSELECTを実行するUPDATEステートメントで1422を取得することもできます。

行番号のスタックトレースを取得していませんか?

于 2010-06-14T21:59:25.210 に答える
0

OUT 変数を持つストアド プロシージャを呼び出していましたが、out 変数を使用しようとすると、このエラーが発生しました。

于 2010-06-14T22:23:30.490 に答える