标签: nocount

存储过程中是否需要"SET NOCOUNT OFF"?

我有很多程序set nocount on.

是否有必要在存储过程结束时将其关闭?

例如:

create procedure DummyProc
as
begin
    set nocount on
    ...
    set nocount off
end
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server nocount

37
推荐指数
2
解决办法
3万
查看次数

SET NOCOUNT OFF或RETURN @@ ROWCOUNT?

我在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
Run Code Online (Sandbox Code Playgroud)

我知道两者都有效,但这是一个更好的选择,为什么?


经过一番尝试后,我得出的结论是,在存储过程中,SET NOCOUNT默认为OFF.是否可以在我的数据库中更改此行为?

sql t-sql sql-server rowcount nocount

17
推荐指数
2
解决办法
3万
查看次数

14
推荐指数
2
解决办法
1万
查看次数

MS SQL:抑制存储过程中调用的存储过程的返回值

我认为我遇到的问题与kcrumley在问题" 通过经典ASP从另一个存储过程调用存储过程的问题"中描述的问题相同.然而,他的问题并没有真正包含一个解决方案,所以我会再给它一个镜头,添加我自己的观察结果:

我有两个存储过程:

CREATE PROCEDURE return_1 AS BEGIN
    SET NOCOUNT ON;
    SELECT 1
END

CREATE PROCEDURE call_return_1_and_return_2 AS BEGIN
    SET NOCOUNT ON;
    EXEC return_1
    SELECT 2
END
Run Code Online (Sandbox Code Playgroud)

请注意,这两个过程都包含"SET NOCOUNT ON".当我执行"call_return_1_and_return_2"时,我仍然可以获得两个记录集.首先是值1,然后是值2.

这会抛出ASP(经典的VBScript ASP).

关于如何抑制第一个结果集的任何提示?为什么即使有NOCOUNT呢?

跳过ASP中的第一个记录集不是一种选择.我需要一个"仅限数据库"的解决方案.

sql-server stored-procedures nocount

11
推荐指数
2
解决办法
3万
查看次数

Microsoft Sync Framework与Nhibernate TooManyRowsAffectedexception冲突

我们正在尝试将Microsoft Sync Framework实现到我们的应用程序中,该应用程序使用NHibernate持久化它的域.

我们遇到的一个问题是,在Sync Framework更改了您的初始数据库结构(添加影子表和触发器)之后,当您尝试将对象插入数据库时​​,NHibernate似乎会因为抛出toomanyrowsaffectedexception而感到不安.

我发现这篇文章的解决方案是在每个更新语句周围添加SET NOCOUNT ON和OFF,但由于表结构由nhibernate自动生成,同步触发器由Sync Framework自动生成,因此手动调整所有触发器实际上不是一个选项.

http://www.codewrecks.com/blog/index.php/2009/03/25/nhibernate-and-toomanyrowsaffectedexception/

我尝试按照此问题中的描述设置sql server 2008属性NOCOUNT:哪里是设置NOCOUNT的最佳位置? 但是这导致了StaleStateException(受影响的行数为-1,预期为1).

您是否知道是否有办法配置同步框架以在其触发器中自动设置这些NOCOUNT语句?或者有没有办法告诉NHibernate期望更多/更少的行被更改?或者也许你们中的任何人都有一个自动脚本来将这些NOCOUNT语句添加到同步框架的触发器中.

Thx提前!

.net c# nhibernate nocount microsoft-sync-framework

5
推荐指数
1
解决办法
1806
查看次数

SQL Server的SET NOCOUNT ON与Postgresql等效

我必须帮助将SQL Server 2008数据库迁移到PostgreSQL 9.4.10。原来querys有SET NOCOUNT ONSET NOCOUNT OFF好几次,所以忽略了受影响的行数是不是一个解决方案我无法改变这个事实。这就是为什么我需要找到与此语句等效的原因,但是我所能找到的只是真正的旧帖子,他们说我应该忽略结果。有任何想法吗?谢谢。

编辑:这些SET NOCOUNT都在这样的存储过程内:

CREATE PROCEDURE [procedureName]
Declares

--Variables 

WITH ENCRYPTION
AS
SET NOCOUNT ON

--Procedure's code

SET NOCOUNT OFF
GO
Run Code Online (Sandbox Code Playgroud)

正如我所说的,这段代码不是我的,因此我发布的任何内容都不能超出我的怀疑范围。

sql postgresql nocount postgresql-9.4

5
推荐指数
0
解决办法
2209
查看次数

全面更新存储过程以包括SET NOCOUNT ON的后果是什么

我们引入了一个用于调用SQL存储过程的新数据访问框架.当调用返回记录集的存储过程时,我们遇到了存储过程也执行某种更新(插入/更新/删除)的问题:

无法更改具有Command对象作为其源的Recordset对象的ActiveConnection属性.

解决方法是在存储过程的顶部添加"SET NOCOUNT ON".这很好用,当然,它也有一个吹捧性能增强.

我们建议开发人员,当他们想编写代码来调用现有的存储过程时,他们还必须重构存储过程本身以包含SET NOCOUNT ON.

但是,这让我想知道,对包括所有存储过程进行全面更新的潜在后果/风险是什么SET NOCOUNT ON.在什么情况下会破坏SP的功能?(假设即使SET NOCOUNT为ON,@@ ROWCOUNT函数也会更新)

一如既往的帮助,非常感谢.

sql t-sql sql-server nocount

3
推荐指数
1
解决办法
591
查看次数

SQL Server 设置 NOCOUNT 开/关

为了获得更好的性能,我们在 SP 内部使用Set NOCOUNT

是否必须在 SP 末尾提及Set NOCOUNT off

如果不是,它会伤害任何地方吗?

谢谢

sql-server sql-server-2005 nocount sql-server-2008 sql-server-2012

1
推荐指数
1
解决办法
1179
查看次数