在存储过程中。如何判断UPDATE是否有效?

时间:2014-07-25 02:58:20

标签: sql-server

我有:

    UPDATE Table1
    SET    Col1 = 'X'
    WHERE  Val1 = @Val1

如何确定是否找到要更新的行?

我还注意到SET NOCOUNT ON

有人可以告诉我这是做什么的吗?

2 个答案:

答案 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

将为每个更新的记录返回一行的行集。