我有:
UPDATE Table1
SET Col1 = 'X'
WHERE Val1 = @Val1
如何确定是否找到要更新的行?
我还注意到SET NOCOUNT ON
有人可以告诉我这是做什么的吗?
答案 0 :(得分:2)
使用@@ROWCOUNT
检索受执行语句影响的行数。在存储过程中:
UPDATE Table1
SET Col1 = 'X'
WHERE Col21 = @Val1
If @@ROWCOUNT > 0
begin
-- execute more logic
-- execute even more logic
end
这足以知道更新是否有效。您可以使用Output Inserted....
逻辑来检索数据更改的完整详细信息。在此处查看http://msdn.microsoft.com/en-us/library/ms177564%28v=sql.100%29.aspx
答案 1 :(得分:0)
存储过程中的命令SET NOCOUNT ON会阻止使用行计数详细信息将记录集发送回客户端。此附加记录集的存在可能会混淆OLEDB和ADODB等库。
您可以修改UPDATE语句,如下所示:
UPDATE Table1
SET Col1 = 'X'
OUTPUT deleted.Val1, deleted.Col1 as old, inserted.COl1 as new
WHERE Val1 = @Val1
将为每个更新的记录返回一行的行集。