Поделиться через


SET NOCOUNT (Transact-SQL)

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure хранилище Azure Synapse Analytics в Microsoft Fabric

Определяет, возвращается ли сообщение, отображающее количество строк, затронутых инструкцией Transact-SQL или хранимой процедурой после результирующий набор. Это сообщение является дополнительным результирующий набор.

Соглашения о синтаксисе Transact-SQL

Синтаксис

SET NOCOUNT { ON | OFF }

Замечания

В противном случае SET NOCOUNT ONсчетчик не возвращается. В SET NOCOUNT противном случае OFFвозвращается число.

Функция @@ROWCOUNT обновляется даже в том ONслучаеSET NOCOUNT.

SET NOCOUNT ON запрещает отправку DONEINPROC сообщений клиенту для каждой инструкции в хранимой процедуре. Для хранимых процедур, содержащих несколько инструкций, которые не возвращают много фактических данных или для процедур, содержащих циклы Transact-SQL, параметр SET NOCOUNT может ON обеспечить значительный рост производительности, так как сетевой трафик значительно сокращается.

Заданный параметр SET NOCOUNT действует во время выполнения или выполнения, а не во время синтаксического анализа.

Чтобы просмотреть текущее значение для этого параметра, выполните следующий запрос.

DECLARE @NOCOUNT VARCHAR(3) = 'OFF';

IF ((512 & @@OPTIONS) = 512)
    SET @NOCOUNT = 'ON';

SELECT @NOCOUNT AS NOCOUNT;

Разрешения

Необходимо быть членом роли public.

Примеры

В следующем примере запрещается вывод сообщения о количестве измененных строк. В следующем примере (5 rows affected) возвращается только клиентам из первой SELECT инструкции.

USE AdventureWorks2022;
GO

SET NOCOUNT OFF;
GO

-- Display the count message.
SELECT TOP (5) LastName
FROM Person.Person
WHERE LastName LIKE 'A%';
GO

-- SET NOCOUNT to ON to no longer display the count message.
SET NOCOUNT ON;
GO

SELECT TOP (5) LastName
FROM Person.Person
WHERE LastName LIKE 'A%';
GO

-- Reset SET NOCOUNT to OFF
SET NOCOUNT OFF;
GO