我最近注意到了一些有趣的行为。
当使用SqlCommand.ExecuteScalar()运行 MS SQL 存储过程时,我的应用程序似乎完全不知道SELECT完成后出现的任何 SQL 错误或 PRINT。
最可能的解释是,在任何 SELECT 结果出现后立即向 C# 提供流控制,而无需等待存储过程完成(尽管存储过程在下面默默地继续执行)。
明显的优势是性能提升(无需等待,因为结果是已知的),不幸的是 C# 应用程序不知道在那之后可能发生的任何 SQL 异常。
谁能证实我的解释?这种行为可以改变吗?