Правильно ли использовать SET NOCOUNT ON только в корневой хранимой процедуре, если вы хотите вызывать другие хранимые процедуры в корневой хранимой процедуре - PullRequest
0 голосов
/ 28 июня 2019

Может ли кто-нибудь помочь, пожалуйста, в следующем случае, касающемся T-SQL: Если у вас есть одна хранимая процедура с именем SP_A, которая вызывает внутри ее хранимую процедуру с именем SP_B, и у вас есть следующая инструкция в качестве первой строки в SP_A: SET NOCOUNT ON. Я знаю, что переменная NOCOUNT имеет пакетную область видимости, поэтому стоит упомянуть, что нигде в теле ни одной из хранимых процедур нет команд GO. Будет ли NOCOUNT действовать в дочерней хранимой процедуре (SP_B)?

Пример кода SP_A:

CREATE PROCEDURE dbo.SP_A
AS
BEGIN
    SET NOCOUNT ON

    EXEC dbo.SP_B
END

Пример кода SP_B:

CREATE PROCEDURE dbo.SP_B
AS
BEGIN
    SELECT * FROM dbo.SOME_TABLE
END

Будет ли выбор из процедуры SP_B выводить число затронутых строк?

1 Ответ

3 голосов
/ 28 июня 2019

SET NOCOUNT ON предотвратит отправку сообщений подсчета строк хранимой процедурой или любыми вложенными хранимыми процедурами (или динамическими пакетами). Если вложенная процедура или пакет устанавливает NOCOUNT OFF, сообщения счетчика строк будут отправлены для операторов в этом пакете, но поведение NOCOUNT OFF будет восстановлено, когда управление вернется к внешнему процессу / пакету.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...