該問題應該簡單,但我找不出答案,也不知道爲什麼我的sp不工作。從存儲過程返回錯誤消息
CREATE PROCEDURE spTest_Delete
@ID int
AS
begin tran
declare @err int
declare @errMesage nvarchar(max)
set @errMesage = ''
set @err = 0
delete from Test
where ID = @ID
set @err = @@ERROR
set @errMesage = ERROR_MESSAGE()
if @err = 0
commit tran
else
begin
RAISERROR(N'Could not delete !Error nr: %d. Message: %s', 1, 16, @err, @errMesage)
rollback tran
end
這個程序運行正常,但在對delete
聲明FK約束的情況下,它運行到一個錯誤(這是很好),我想捕獲錯誤。
消息547,級別16,狀態0,過程spTest_Delete,第12行
DELETE語句衝突與基準約束 「FK_TEstFK_Test」。衝突發生在數據庫「測試」中,表 「dbo.Test」,列'ID'。該語句已終止。無法刪除!
錯誤NR:547消息:(空)消息50000,級別1,狀態16
我總是空的我的信息變量,即使delete
語句拋出一個錯誤。
嘗試抓住了伎倆,但我仍然有點困惑,爲什麼它不工作沒有嘗試抓住。 – CiucaS
@CiucaS: - 通常建議使用TRY..CATCH來捕捉錯誤。您可以嘗試使用'if ISNULL(@ err,0)= 0' –
Error.Message如何在.net端捕獲ErrorMessage? – user3079364