Oracle の SQLERRM に相当するものを探しています。T-SQL の ERROR_MESSAGE() は同じことを達成しますか?
2732 次
2 に答える
2
はい、本質的には同じです...次のように、最近発生したエラー例外に関連付けられたエラーメッセージを返しますSQLERRM
使用例:
BEGIN TRY
-- Generate a divide-by-zero error.
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS ErrorNumber
,ERROR_SEVERITY() AS ErrorSeverity
,ERROR_STATE() AS ErrorState
,ERROR_PROCEDURE() AS ErrorProcedure
,ERROR_LINE() AS ErrorLine
,ERROR_MESSAGE() AS ErrorMessage;
END CATCH;
于 2013-09-05T13:41:48.567 に答える
0
これは、try/catch ブロックのスコープで使用できます。
CATCH ブロックの範囲外では、@@ERROR のエラー番号は、Transact-SQL コード内のエラーに関して入手できる唯一の情報です。
@@error を使用してエラー番号を取得し、それが標準エラーであると仮定して sys.messages から選択できます。ユーザー定義のエラーの場合は、メッセージを作成する必要がある場合があります。
SET @ErrorVariable = @@ERROR;
SELECT @ErrorVariable AS ErrorID, text
FROM sys.messages
WHERE message_id = @ErrorVariable;
GO
于 2013-09-05T13:47:03.590 に答える