ADO 可能忽略来自 SQL 服务器的错误

ADO possibly ignoring error from SQL Server

这是一些 SQL...

UPDATE table1 SET date = GETDATE() WHERE id = @id

IF @@ROWCOUNT = 0
BEGIN;
    THROW 50004, 'Row not updated.', 1;
END

如果我 运行 在 Management Studio 中使用伪造的 ID,我得到...

(0 row(s) affected) Msg 50004, Level 16, State 1, Procedure MyStoredProcedure, Line 50 Row not updated.

如果我 运行 来自 ASP Classic,Err.Number 为 0 并且连接的错误集合为空。

如果我删除 UPDATE 语句,则会记录错误。

为什么 ADO 在更新后忽略错误?

我在存储过程的开头添加了SET NOCOUNT ON

Here,它说...

SET NOCOUNT ON prevents the sending of DONE_IN_PROC messages to the client for each statement in a stored procedure.

因此,可能 DONE_IN_PROC 消息导致后续错误被跳过。