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 代码中错误的唯一可用信息。

技术网文章

您可以使用 @@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 回答