SET ROWCOUNT (Transact-SQL)SET ROWCOUNT (Transact-SQL)

適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database はいAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance はいAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics はいParallel Data WarehouseParallel Data WarehouseyesParallel Data WarehouseParallel Data Warehouse適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database はいAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance はいAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics はいParallel Data WarehouseParallel Data WarehouseyesParallel Data WarehouseParallel Data Warehouse

指定の行数が返された後、SQL ServerSQL Server のクエリの処理を停止します。Causes SQL ServerSQL Server to stop processing the query after the specified number of rows are returned.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文Syntax

SET ROWCOUNT { number | @number_var }   

注意

SQL Server 2014 以前の Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.

引数Arguments

number | @number_varnumber | @number_var
特定のクエリを停止するまでに処理される行数を整数で指定します。Is the number, an integer, of rows to be processed before stopping the specific query.

解説Remarks

重要

SQL Server の将来のリリースでは、SET ROWCOUNT を使用しても、DELETE、INSERT、および UPDATE ステートメントが影響を受けることはありません。Using SET ROWCOUNT will not affect DELETE, INSERT, and UPDATE statements in a future release of SQL Server. 新しい開発作業では DELETE、INSERT、および UPDATE ステートメントでの SET ROWCOUNT の使用を避け、現在 SET ROWCOUNT を使用しているアプリケーションは変更を検討してください。Avoid using SET ROWCOUNT with DELETE, INSERT, and UPDATE statements in new development work, and plan to modify applications that currently use it. 同様の処理を行う場合は、TOP 構文を使用します。For a similar behavior, use the TOP syntax. 詳細については、「TOP (Transact-SQL)」を参照してください。For more information, see TOP (Transact-SQL).

このオプションをオフにして、すべての行が返されるようにするには、SET ROWCOUNT 0 を指定します。To set this option off so that all rows are returned, specify SET ROWCOUNT 0.

SET ROWCOUNT オプションを設定すると、大部分の Transact-SQLTransact-SQL ステートメントでは、指定した行数の処理が終わったところで処理が停止します。Setting the SET ROWCOUNT option causes most Transact-SQLTransact-SQL statements to stop processing when they have been affected by the specified number of rows. これにはトリガーも含まれます。This includes triggers. ROWCOUNT オプションは動的カーソルには影響しませんが、このオプションによってキーセット カーソルと非反映型カーソルの行セットは制限されます。The ROWCOUNT option does not affect dynamic cursors, but it does limit the rowset of keyset and insensitive cursors. このオプションの使用には注意が必要です。This option should be used with caution.

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

SET ROWCOUNT は、解析時ではなく実行時に設定されます。The setting of SET ROWCOUNT is set at execute or run time and not at parse time.

アクセス許可Permissions

public ロールのメンバーシップが必要です。Requires membership in the public role.

Examples

SET ROWCOUNT を指定した場合、指定した行数が返されると処理は停止します。SET ROWCOUNT stops processing after the specified number of rows. 次の例では、500 行を超える行数は、Quantity300 より少ないという条件を満たしていますが、In the following example, note that over 500 rows meet the criteria of Quantity less than 300. SET ROWCOUNT の適用後、すべての行が返されたわけではないことがわかります。However, after applying SET ROWCOUNT, you can see that not all rows were returned.

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

結果セットは次のようになります。Here is the result set.

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

(1 row(s) affected)

ここで ROWCOUNT4 に設定し、すべての行のうち、4 行だけが返されることを確認します。Now, set ROWCOUNT to 4 and return all rows to demonstrate that only 4 rows are returned.

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

例: Azure Synapse AnalyticsAzure Synapse AnalyticsParallel Data WarehouseParallel Data WarehouseExamples: Azure Synapse AnalyticsAzure Synapse Analytics and Parallel Data WarehouseParallel Data Warehouse

SET ROWCOUNT を指定した場合、指定した行数が返されると処理は停止します。SET ROWCOUNT stops processing after the specified number of rows. 次の例では、20 より多くの行が AccountType = 'Assets' の条件を満たしていることに注意してください。In the following example, note that more than 20 rows meet the criteria of AccountType = 'Assets'. SET ROWCOUNT の適用後、すべての行が返されたわけではないことがわかります。However, after applying SET ROWCOUNT, you can see that not all rows were returned.

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

すべての行を返すには、ROWCOUNT を 0 に設定します。To return all rows, set ROWCOUNT to 0.

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

参照See Also

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