2017-08-03 18 views
0

例外ハンドラでは、PL/SQLではdbms_utility.format_error_backtraceを使用してエラーのバックトレースをキャッチします。私は主キーMY_TABLE_PKが私が知りたいのですがどのようなライン41に違反して知っているだから今Oracle SQLのエラー処理:SQL文のキャッチ

ORA-00001: unique constraint (MY_USER.MY_TABLE_PK) violated ORA-06512: at line 41 

実際のSQLです:私は手順の主キー違反に実行すると、これは次のエラーメッセージを返します。このプライマリキー違反の原因となったステートメントでは、4139行目のエラーメッセージにINSERT INTO MY_TABLE ...などのエラーメッセージを含めたいと考えています。

どのようにすればよいですか?

EDIT:

私は文がライン41で見つけることができます知っている。しかし、それは私が求めていたものではありません。私が尋ねるのは、エラーメッセージのエラーの原因となったSQLステートメントを含める方法です。

+0

あなたエディタはライン41 –

+0

を表示することができるはず、これはどのように[PL/SQLの開発者のhttps://livesql.oracle.com/apex/livesql/file/content_CSBE3ZJTSXBTUEI174J84WGO0.html – XING

+0

可能な複製を助けることができるかもしれませ挿入を失敗させた行を取得するには?](https://stackoverflow.com/questions/13838446/pl-sql-developer-how-to-get-the-row-that-made-the-insert-fail) – Dmitry

答えて

0

エディタを使用してdbのコードを表示できない場所で実行している場合は、次の操作を実行できます。

SELECT line, text 
FROM all_source 
WHERE line BETWEEN :err_line - 10 AND :err_line + 10 AND name = :pkg 
+0

これは、たとえばnr行の上の例のように常に動作するとは限りません。 41ステートメントは動的に構築されます。あなたの提案は、使用された引数を返します... – Eric12345

+0

@ Eric12345 - 私はそれを考慮しなかったので、OPは動的SQLの言及をしません。しかし、この解答が明らかなので、この回答は間違いないので、私はそれを削除します。 – BriteSponge