1

Oracle の SQLERRM に相当するものを探しています。T-SQL の ERROR_MESSAGE() は同じことを達成しますか?

4

2 に答える 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 コード内のエラーに関して入手できる唯一の情報です。

Technet の記事

@@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 に答える