SQL Server-用于检查是否在表中进行了更新的@@ROWCOUNT的替代方法
在SQL Server中,我有一个存储过程来更新表中的某一列。它返回一个布尔输出参数,这取决于它是否更新了表中的项 看起来像这样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
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
是一般的解决方案。