獲得)EXEC(後@@ ERROR請參看下面的T-SQL代碼不能與錯誤
DECLARE @iError INT
EXEC('select * from sysobj')
SELECT @iError = @@ERROR
PRINT 'Error = ' + CAST(@iError AS VARCHAR(10))
我運行後,它會返回錯誤信息,這就是我想要的。
消息208,級別16,狀態1,行1
無效的對象名稱的sysobj「。
錯誤= 208
不過,如果我更改查詢
DECLARE @iError INT
EXEC('select * from sysobjects where ''c'' = 1')
SELECT @iError = @@ERROR
PRINT 'Error = ' + CAST(@iError AS VARCHAR(10))
輸出將是
消息245,級別16,狀態1,行1
轉換失敗當將varchar值'c'轉換爲數據類型int時。
問題是沒有執行EXEC()的任何代碼。
在真實的存儲過程中,我有一些代碼來處理PRINT後的錯誤。而這些代碼都沒有在第二種情況下執行。
有人能告訴我爲什麼會發生這種情況嗎?
我測試了這兩個SQL Server 2008和2005
感謝
我認爲你需要向我們展示你正在嘗試和失敗來運行代碼。它是否在嘗試Catch塊? – HLGEM 2012-04-13 20:48:56