如果我的存储过程中有这样的代码。除了对返回的数据进行一些检查之外,SELECT和UPDATE之间没有代码,如果数据不正确则会发生THROW。:
SELECT col1 FROM b WHERE c = @c
UPDATE b SET col2 = 99 WHERE c = @c
我可以期望它执行与以下相同数量的数据访问:
UPDATE b SET col2 = 99 WHERE c = @c
请注意,我这样做的原因是我想在第一次选择之后检查rowcount并在开始UPDATE之前发生错误。如果没有性能差异,它只会使我的代码看起来更清洁。
答案 0 :(得分:2)
有区别,它会做2个操作,但如果你需要col1值,可以这样做:
UPDATE b SET @col1 = co1, col2 = 99 WHERE c = @c
或者如果您需要更复杂的内容,例如前一个值,那么您可以使用输出
update b set col2 = 99 output deleted.col2 WHERE c = @c