我正在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,则该本地设置将优先。

08-04 07:27