我正在 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 在存储过程中默认处于关闭状态。是否可以在我的数据库中更改此行为?
最佳答案
使用@@RowCount。它是明确且透明的,它完全由您的代码而不是内置行为控制。
NOCOUNT
选项可以手动设置为默认为ON
(选项>查询执行>SQL Server>高级)。如果您以这种方式设置它,但随后在存储过程中声明SET NOCOUNT OFF
,则本地设置优先。
关于sql - 设置 NOCOUNT OFF 或返回 @@ROWCOUNT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/995589/