分享方式:


SET NOCOUNT (Transact-SQL)

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

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

Transact-SQL 語法慣例

語法

SET NOCOUNT { ON | OFF }

備註

當 為 ONSET NOCOUNT,不會傳回計數。 當 為 OFFSET NOCOUNT,會傳回計數。

即使 是 ONSET NOCOUNT函式@@ROWCOUNT也會更新。

SET NOCOUNT ON 會防止針對預存程式中每個語句將訊息傳送 DONEINPROC 至用戶端。 對於包含數個語句的預存程式,這些語句不會傳回太多實際數據,或針對包含 Transact-SQL 迴圈的程式,設定 SET NOCOUNTON 可提供顯著的效能提升,因為網路流量會大幅降低。

指定的 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