SET NOCOUNT (Transact-SQL)

適用於:SQL ServerAzure SQL 資料庫 Azure SQL 受控執行個體 Microsoft Fabric 中的Azure Synapse Analytics 倉儲

控制是否在結果集之後傳回顯示 Transact-SQL 語句或預存程式所影響之數據列數目的訊息。 此訊息是額外的結果集。

Transact-SQL 語法慣例

Syntax

SET NOCOUNT { ON | OFF }

注意

若要檢視 SQL Server 2014 (12.x) 和舊版的 Transact-SQL 語法,請參閱 舊版檔

備註

當 SET NOCOUNT 為 ON 時,不會傳回計數。 當 SET NOCOUNT 是 OFF 時,會傳回計數。

即使 SET NOCOUNT 是 ON,也會更新 @@ROWCOUNT 函數。

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 個受影響的資料列)」只會從第一個 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

另請參閱