该问题应该简单,但我找不出答案,也不知道为什么我的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