SET NOCOUNT (Transact-SQL)
適用於:SQL ServerAzure SQL 資料庫 Azure SQL 受控執行個體 Microsoft Fabric 中的 Azure Synapse Analytics 倉儲
控制是否在結果集之後傳回顯示 Transact-SQL 語句或預存程式所影響之數據列數目的訊息。 此訊息是額外的結果集。
語法
SET NOCOUNT { ON | OFF }
備註
當 為 ON
時SET NOCOUNT
,不會傳回計數。 當 為 OFF
時SET NOCOUNT
,會傳回計數。
即使 是 ON
,SET NOCOUNT
函式@@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 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