最近我注意到了一些有趣的行为。
使用SqlCommand.ExecuteScalar()运行MS SQL存储过程时,我的应用程序似乎完全不知道在SELECT完成后出现的任何SQL错误或PRINTs。
最有可能的解释是,在任何SELECT结果出现后,流程控制立即交给C#,而不等待存储过程完成(虽然存储过程在此期间继续默默地执行)。
明显的优点是性能提升(无需等待,因为结果已知),不幸的是,C#应用程序对在该点之后可能发生的任何SQL异常都不知情。
有人可以确认我的解释吗? 是否可以更改此行为?
ExecuteScalar
是否适用。 - Martin Smith