Oracle SQLERRM的T-SQL等价物

时间:2013-09-05 13:32:26

标签: sql-server oracle tsql

寻找相当于Oracle的SQLERRM。 T-SQL的ERROR_MESSAGE()是否完成了同样的事情?

2 个答案:

答案 0 :(得分:0)

是的,它基本上是一样的......它返回与最近引发的错误异常相关的错误消息,就像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;

答案 1 :(得分:0)

您可以在try / catch块的范围内使用它。

  

在CATCH块的范围之外,@@ ERROR中的错误号是有关Transact-SQL代码中的错误的唯一可用信息。

Technet Article

您可以使用@@ error获取错误编号,并从sys.messages中选择它,假设它是标准错误。如果是用户定义的错误,则可能必须创建消息。

SET @ErrorVariable = @@ERROR;


SELECT @ErrorVariable AS ErrorID, text
FROM sys.messages
WHERE message_id = @ErrorVariable;
GO