SET ROWCOUNT (Transact-SQL)

対象者:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analyticsアナリティクスプラットフォームシステム(PDW)Microsoft FabricにおけるSQLデータベース

指定の行数が返された後、SQL Server のクエリの処理を停止します。

Transact-SQL 構文表記規則

構文

SET ROWCOUNT { number | @number_var }   

引数

|@number_var
特定のクエリを停止するまでに処理される行数を整数で指定します。

解説

重要

SET SET ROWCOUNTの使用は、今後のSQL ServerリリースにおけるDELETE、INSERT、UPDATEの声明に影響を与えません。 新しい開発作業ではDELETE、INSERT、UPDATE文でSETSET ROWCOUNTを使わず、現在使っているアプリケーションを変更する計画を立ててください。 同様の処理を行う場合は、TOP 構文を使用します。 詳しくは、「TOP (Transact-SQL)」をご覧ください。

このオプションをオフにしてすべての行を返すには、 SET ROWCOUNT 0を指定します。

SET ROWCOUNTオプションを設定すると、指定された行数の影響を受けたほとんどの Transact-SQL 文の処理が停止します。 これにはトリガーも含まれます。 ROWCOUNTオプションは動的カーソルには影響しませんが、キーセットや無感応カーソルの行セットを制限します。 このオプションの使用には注意が必要です。

SET ROWCOUNT 行数が小さい方の場合、SELECT文のTOPキーワードを上書きします。

SET ROWCOUNTの設定は、解析時ではなく実行時に設定されます。

アクセス許可

public ロールのメンバーシップが必要です。

SET ROWCOUNT 指定された行数を過ぎると処理を停止します。 次の例では、500 行を超える行数は、Quantity300 より少ないという条件を満たしていますが、 しかし、 SET ROWCOUNTを適用すると、すべての行が返却されていないことがわかります。

USE AdventureWorks2022;  
GO  
SELECT count(*) AS Count  
FROM Production.ProductInventory  
WHERE Quantity < 300;  
GO  

結果セットは次のとおりです。

Count 
----------- 
537 

(1 row(s) affected)

ここで ROWCOUNT4 に設定し、すべての行のうち、4 行だけが返されることを確認します。

SET ROWCOUNT 4;  
SELECT *  
FROM Production.ProductInventory  
WHERE Quantity < 300;  
GO  
  
-- (4 row(s) affected)

例: Azure Synapse Analytics、Analytics Platform System (PDW)

SET ROWCOUNT 指定された行数を過ぎると処理を停止します。 次の例では、20 より多くの行が AccountType = 'Assets' の条件を満たしていることに注意してください。 しかし、 SET ROWCOUNTを適用すると、すべての行が返却されていないことがわかります。

-- Uses AdventureWorks  
  
SET ROWCOUNT 5;  
SELECT * FROM [dbo].[DimAccount]  
WHERE AccountType = 'Assets';  

すべての行を返すには、 ROWCOUNT を0に設定してください。

-- Uses AdventureWorks  
  
SET ROWCOUNT 0;  
SELECT * FROM [dbo].[DimAccount]  
WHERE AccountType = 'Assets';  

参照

SET ステートメント (Transact-SQL)