適用対象: SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Warehouse in Microsoft Fabric
Transact-SQL ステートメントまたはストアド プロシージャで処理された行数を示すメッセージを結果セットの後に返すかどうかを制御します。 このメッセージは追加の結果セットです。
構文
SET NOCOUNT { ON | OFF }
解説
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 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