SET ROWCOUNT (Transact-SQL)

適用対象: SQL Server Azure SQL データベース Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

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

Transact-SQL 構文表記規則

構文

SET ROWCOUNT { number | @number_var }   

引数

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

解説

重要

SQL Server の将来のリリースでは、SET ROWCOUNT を使用しても、DELETE、INSERT、および UPDATE ステートメントが影響を受けることはありません。 新しい開発作業では DELETE、INSERT、および UPDATE ステートメントでの SET ROWCOUNT の使用を避け、現在 SET ROWCOUNT を使用しているアプリケーションは変更を検討してください。 同様の処理を行う場合は、TOP 構文を使用します。 詳しくは、「TOP (Transact-SQL)」をご覧ください。

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

SET ROWCOUNT オプションを設定すると、大部分の Transact-SQL ステートメントでは、指定した行数の処理が終わったところで処理が停止します。 これにはトリガーも含まれます。 ROWCOUNT オプションは動的カーソルには影響しませんが、このオプションによってキーセット カーソルと非反映型カーソルの行セットは制限されます。 このオプションの使用には注意が必要です。

SET ROWCOUNT で指定された行数が SELECT ステートメントの TOP キーワードの値より少ない場合は、SET ROWCOUNT の値がオーバーライドされます。

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)