2013-09-05 103 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