gpt4 book ai didi

sql-server - SET NOCOUNT ON 在 SQL Server Management Studio 中带回消息

转载 作者:搜寻专家 更新时间:2023-10-30 21:48:06 24 4
gpt4 key购买 nike

我有以下存储过程:

ALTER PROCEDURE [dbo].[spTitle_GetTitleById]
(
@TitleId INT
)

AS

BEGIN

SET NOCOUNT ON;

SELECT
Id,
Name,
Active
FROM
Title
WHERE
Id = @TitleId

END

如果我不想返回消息,我被告知使用 SET NOCOUNT ON;。我通过 SQL Server Management Studio 2008 运行此存储过程,并收到以下消息:

(1 row(s) affected)

这仍然是一条消息。我们的一位 DBA 说会是这种情况,但是当它通过应用程序运行时它不会返回任何消息。当我使用 SET NOCOUNT ON; 时,有没有一种方法可以测试我是否返回了消息?我不想假设,我想知道。

我右键单击存储过程并选择执行存储过程...然后我将其设置为关闭,我得到:

(1 row(s) affected)
(1 row(s) affected)

因此将其设置为 ON 或 OFF,它仍然会在结果面板的“消息”选项卡中返回消息。

只是另一个问题,什么时候(在什么情况下)使用 SET NOCOUNT OFF; 是明智的?

最佳答案

SET NOCOUNT ON 在过程退出时被重置,并且它上升到调用堆栈。当您从 SSMS 执行该过程时,它会生成如下脚本。

DECLARE @return_value int

EXEC @return_value = [dbo].[spTitle_GetTitleById]
@TitleId = 1

SELECT 'Return Value' = @return_value /*Message comes from here*/

如果您出于某种原因想要避免这种情况,您需要在外部批处理中SET NOCOUNT ON。参见 SET NOCOUNT ON usage用于一些关于使用此 ONOFF

优点的讨论

关于sql-server - SET NOCOUNT ON 在 SQL Server Management Studio 中带回消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5884222/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com