対象者:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
アナリティクスプラットフォームシステム(PDW)
Microsoft FabricにおけるSQLデータベース
指定の行数が返された後、SQL Server のクエリの処理を停止します。
構文
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 行を超える行数は、Quantity が 300 より少ないという条件を満たしていますが、 しかし、 SET ROWCOUNTを適用すると、すべての行が返却されていないことがわかります。
USE AdventureWorks2022;
GO
SELECT count(*) AS Count
FROM Production.ProductInventory
WHERE Quantity < 300;
GO
結果セットは次のとおりです。
Count
-----------
537
(1 row(s) affected)
ここで ROWCOUNT を 4 に設定し、すべての行のうち、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';