次の方法で共有


SET NOCOUNT (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsMicrosoft Fabric のウェアハウス

Transact-SQL ステートメントまたはストアド プロシージャで処理された行数を示すメッセージを結果セットの後に返すかどうかを制御します。 このメッセージは追加の結果セットです。

Transact-SQL 構文表記規則

構文

SET NOCOUNT { ON | OFF }

Note

SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

解説

このON値を指定するとSET NOCOUNT、カウントは返されません。 次OFFの値を指定するとSET NOCOUNT、カウントが返されます。

関数は @@ROWCOUNT 、次の場合 SET NOCOUNT でも更新されます ON

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