我有许多具有set nocount on的过程。

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

例如。:

create procedure DummyProc
as
begin
    set nocount on
    ...
    set nocount off
end

最佳答案

set nocount on将禁用SQL返回的X rows affected.消息。在某些情况下,由于客户端执行存储的proc的不良影响,此消息被抑制。
set nocount off将撤消此抑制。但是,set nocount on是一个作用域设置,默认情况下,无论如何离开作用域都会被关闭。

现在,需要set nocount off吗?不,因为执行的任何新命令都将在不同的范围内,并且默认情况下set nocount off始终有效。但是,正如上面的注释中所述,这是一个好习惯,只是为了明确表明该过程将在proc完成执行后恢复正常。

10-08 11:46