2013-09-05 137 views

回答

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; 
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