傳回執行的上一個 Transact-SQL 語句的錯誤号。
Transact-SQL 文法約定
文法
傳回類型
integer
備注
如果前一個 Transact-SQL 語句執行沒有錯誤,則傳回 0。
如果前一個語句遇到錯誤,則傳回錯誤号。如果錯誤是 sys.messages 目錄視圖中的錯誤之一,則 @@ERROR 将包含 sys.messages.message_id 列中表示該錯誤的值。可以在 sys.messages 中檢視與 @@ERROR 錯誤号相關的文本資訊。
由于 @@ERROR 在每一條語句執行後被清除并且重置,是以應在語句驗證後立即檢視它,或将其儲存到一個局部變量中以備以後檢視。
SQL Server 2005 資料庫引擎 引入 TRY...CATCH 構造來處理錯誤。TRY...CATCH 構造也支援其他傳回的錯誤資訊多于 @@ERROR 的系統函數(ERROR_LINE、ERROR_MESSAGE、ERROR_PROCEDURE、ERROR_SEVERITY 和 ERROR_STATE)。TRY...CATCH 也支援 ERROR_NUMBER 函數,但不限制該函數在語句産生錯誤後立即在語句中傳回錯誤号。有關詳細資訊,請參閱 TRY...CATCH (Transact-SQL)。
示例
以下示例用 @@ERROR 在 UPDATE 語句中檢測限制檢查沖突(錯誤 #547)。
複制代碼
在此示例中,IF...ELSE 語句在存儲過程中的 INSERT 語句後檢測 @@ERROR。@@ERROR 變量的值将決定發送給調用程式的傳回代碼,以訓示此過程的成功與失敗。
下面的示例用 @@ERROR 和 @@ROWCOUNT 驗證一條 UPDATE 語句的操作。為任何可能出現的錯誤而檢驗 @@ERROR 的值,而用 @@ROWCOUNT 保證更新已成功應用于表中的某行。