我正在Sql Server 2008数据库中创建存储过程。我想返回受影响的行数。 SET NOCOUNT OFF或RETURN @@ ROWCOUNT哪个更好?
ALTER PROCEDURE [dbo].[MembersActivateAccount]
@MemberId uniqueidentifier
AS
BEGIN
-- Should I use this?
SET NOCOUNT OFF;
UPDATE [dbo].Members SET accountActive = 1 WHERE id = @MemberId;
--Or should I SET NOCOUNT ON and use the following line instead?
--return @@ROWCOUNT;
END
我知道两者都可以,但是哪个更好,为什么?
经过一番尝试,我得出的结论是,存储过程中默认情况下SET NOCOUNT为OFF。是否可以在数据库中更改此行为?
最佳答案
使用@@ RowCount。它是显式和透明的,完全由代码控制,而不是内置行为。
可以将NOCOUNT
选项手动设置为默认设置为ON
(Optons>查询执行> SQL Server>高级)。如果以这种方式进行设置,但随后在存储过程中声明了SET NOCOUNT OFF
,则该本地设置将优先。