SQL Server-用于检查是否在表中进行了更新的@@ROWCOUNT的替代方法

SQL Server-用于检查是否在表中进行了更新的@@ROWCOUNT的替代方法,sql,sql-server,stored-procedures,Sql,Sql Server,Stored Procedures,在SQL Server中,我有一个存储过程来更新表中的某一列。它返回一个布尔输出参数,这取决于它是否更新了表中的项 看起来像这样 DECLARE @UpdateCount INT UPDATE dbo.Person SET Age = 21 WHERE ID = 1 SELECT @UpdateCount = @@ROWCOUNT IF(@UpdateCount = 1) BEGIN SET @Output_IsUpdateSuccessful = 1 END ELSE

在SQL Server中,我有一个存储过程来更新表中的某一列。它返回一个布尔输出参数,这取决于它是否更新了表中的项

看起来像这样

DECLARE @UpdateCount INT

UPDATE dbo.Person
SET Age = 21
WHERE ID = 1

SELECT @UpdateCount = @@ROWCOUNT

IF(@UpdateCount = 1)
  BEGIN
    SET @Output_IsUpdateSuccessful = 1
  END

ELSE
  BEGIN
    SET @Output_IsUpdateSuccessful = 0
  END
为了验证是否进行了更新,我只使用@ROWCOUNT。但我不确定这样做是否可靠

是否有检查是否已更新的一般或最佳实践 在SQL Server中制作


@@ROWCOUNT
可以,但我会修改
if
控件,因为
update
行可能不止一行

SELECT @UpdateCount = @@ROWCOUNT

IF(@UpdateCount = 0)
BEGIN
    SET @Output_IsUpdateSuccessful = 0
END  
ELSE
BEGIN
    SET @Output_IsUpdateSuccessful = 1
END

另一种方法是使用
OUTPUT…INTO
,然后查看表中是否插入了行,这可能需要比
@@ROWCOUNT
更多的资源。在这种情况下,有一种更简单的选择,因为您可以直接设置布尔值:在语句之前执行
设置@Output\u IsUpdateSuccessful=0
,在
更新中执行
设置年龄=21,@Output\u IsUpdateSuccessful=1
。在这里发生这种情况是因为您正在更新一行,并且已经有了一个输出参数--
@@ROWCOUNT
是一般的解决方案。