这是一些SQL ...
UPDATE table1 SET date = GETDATE() WHERE id = @id
IF @@ROWCOUNT = 0
BEGIN;
THROW 50004, 'Row not updated.', 1;
END
如果我在管理工作室中使用虚假ID运行此操作,我会...
(0行(s)受影响)Msg 50004,Level 16,State 1,Procedure MyStoredProcedure,第50行没有更新。
如果我从ASP Classic运行此命令,Err.Number
为0且连接的错误集合为空。
如果我删除UPDATE
语句,则会注册错误。
为什么ADO会在更新后忽略错误?
答案 0 :(得分:1)
我将SET NOCOUNT ON
添加到存储过程的开头。
Here,它说......
SET NOCOUNT ON可防止将DONE_IN_PROC消息发送到 存储过程中每个语句的客户端。
因此,可能是DONE_IN_PROC
消息导致后续错误被跳过。