场景: C#apps使用SQL2000.它在应用程序的try catch中排除了3个存储过程.在捕获中,错误被抑制.由于某些合法性,c#代码无法更改和实现.
问:如何将存储过程中的实际SQL错误捕获到日志文件或其他表中?@@ Error向应用程序返回错误消息,但在查询分析器中进行评估时,它始终为0,尽管'If @@ Error <> 0'会触发.我尝试存储@@错误号,但它始终为0.
请帮忙.
@@ERROR
检查时重置为0.为什么?因为它反映了最后执行的语句的状态.
IF @@ERROR <> 0 ...
是一个语句,该语句成功,导致@@ERROR
设置为0.
检查和操作@@ERROR
值的正确方法如下:
DECLARE @ErrorCode INT INSERT INTO Table ... SET @ErrorCode = @@ERROR IF @ErrorCode <> 0 BEGIN INSERT INTO ErrorLog (ErrorCode, Message) VALUES (@ErrorCode, 'The INSERT operation failed.') END