- ベストアンサー
ストアドプロシージャのエラーメッセージ取得
現在、職場で2008R2の環境でSPを書いているのですが、エラーメッセージの取得方法がわかりません。 「@@error」でエラー番号は取得できますが、同じような感じでメッセージは取得できないでしょうか? error_messageが使えれば楽なのですが、開発ルール上TRY~CATCHが使えないので・・・。 どなたか、ご教授願います。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ANo1です。 大変失礼しました。 >「@@error」でエラー番号は取得できますが、 >同じような感じでメッセージは取得できないでしょうか? ですが、この機能はなかったです。 Try Catchができるようになって、SQL Server2005からできるようになったという話でした。 (ということでTry Catch内でないと不可。) ・・・昔のソースを確認したところ、@@errorのコードに応じてプログラム内で固定のメッセージを 出力していました。(忘れていました。) ## 大昔に、SQL Server2000で、これで取れるのでは・・・ダメじゃない。 ## とやった間違いをまたやってしまいました。 ということで、ANo1では望んでおられることはできませんので削除扱いしてください。
その他の回答 (1)
- Siegrune
- ベストアンサー率35% (316/895)
マニュアルの@@ERRORの説明より。 http://msdn.microsoft.com/ja-jp/library/ms188790.aspx 「直前のステートメントでエラーが発生した場合は、エラー番号が返されます。エラーが sys.messages カタログ ビューのエラーであった場合、そのエラーに対応する sys.messages.message_id 列の値が @@ERROR に含まれます。@@ERROR エラー番号に関連付けられているテキストは、sys.messages で表示できます。」 の最終行を見てもらって、sys.messagesを探す。 マニュアルのsys.messages (Transact-SQL)の説明。 http://msdn.microsoft.com/ja-jp/library/ms187382.aspx ということで、 select text from sys.messages where message_id = エラーメッセージの番号 で取得できるはずですが。
お礼
ご回答ありがとうございます。 教えていただいたマニュアルを確認し、sys.messagesを見てみたのですが、 ここにはエラーメッセージの定型文が設定されているみたいです。 最初の質問が悪かったみたいですが、今回取得したい情報は、 コンソールに出力される最終的なエラー文言なので、ちょっと要件を満たせそうにないです・・・。
お礼
早速のお返事ありがとうございます。 やっぱり無理なのですね・・・。 それがわかっただけでも収穫でした。 (できるかどうか判らないのが一番気持ち悪いので) きっぱりあきらめて別の方法を模索します。