我有一个存储过程,似乎没有正确记录其错误。
代码出现了错误,但是 catch 块似乎没有生效。
try 块非常长,但错误部分很简单且在最后,因此我已将其简化。
代码出现了错误,但是 catch 块似乎没有生效。
try 块非常长,但错误部分很简单且在最后,因此我已将其简化。
BEGIN TRY
insert into tbl_X
select * from #temp_tbl_Y
RETURN 1
END TRY
BEGIN CATCH
Insert Into ExtractsErrorLog
SELECT
getdate() as ErrorDate
,object_name(@@procid) as ProcedureName
,ERROR_NUMBER() as ErrorNumber
,ERROR_LINE() as ErrorLine
,ERROR_MESSAGE() as ErrorMessage
;
DECLARE @errormessage as varchar(max);
DECLARE @errorseverity as int;
DECLARE @errorstate as int;
set @errormessage = ERROR_MESSAGE();
set @errorseverity = ERROR_SEVERITY();
set @errorstate = ERROR_STATE();
RAISERROR (@errormessage,
@errorseverity,
@errorstate
);
END CATCH;
这个存储过程失败的错误是我们老朋友“提供的值的列名或编号与表定义不匹配”。 我已经修复了这个错误——这是一个愚蠢的懒惰错误——但我很困惑为什么我的错误日志处理似乎没有起作用——没有将任何行插入到我的ExtractsErrorLog表中。
ExtractsErrorLog
表的定义吗? - Lamak