Share via


SET ROWCOUNT (Transact-SQL)

指定の行数が返された後、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 を使用しているアプリケーションは変更を検討してください。また、現在 SET ROWCOUNT を使用している DELETE、INSERT、UPDATE ステートメントについては、TOP 構文を使用して書き換えることをお勧めします。詳細については、「DELETE (Transact-SQL)」、「INSERT (Transact-SQL)」、または「UPDATE (Transact-SQL)」を参照してください。

リモート テーブルとローカルおよびリモート パーティション ビューに対する INSERT、UPDATE、DELETE ステートメントでは、SET ROWCOUNT オプションの設定は無視されます。

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

注意

SET ROWCOUNT オプションを設定すると、大部分の Transact-SQL ステートメントでは、指定した行数の処理が終わったところで処理が停止します。このようなステートメントには、トリガーや INSERT、UPDATE、および DELETE などのデータ変更ステートメントがあります。ROWCOUNT オプションは動的カーソルには影響しませんが、このオプションによってキーセット カーソルと非反映型カーソルの行セットは制限されます。このオプションは注意して使用してください。このオプションは主に SELECT ステートメントで使用します。

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

INSERT、UPDATE、DELETE ステートメントの場合、同じステートメントで TOP 式が明示的に使用されていると、SET ROWCOUNT は無視されます。INSERT の後に SELECT 句が使用されているステートメントも、この対象となります。

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

権限

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

SET ROWCOUNT を指定した場合、指定した数の行が返されると処理は停止します。次の例では、545 行という行数は、Quantity が 300 より少ないという条件を満たしていますが、更新で返される行数を確認すると、すべての行が処理されたわけではないことがわかります。ROWCOUNT はすべての Transact-SQL ステートメントに影響します。

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

以下に結果セットを示します。

Count

-----------

537

(1 行処理されました)

ここで、ROWCOUNT を 4 に設定し、Quantity が 300 より少ないという条件ですべての行を更新します。

SET ROWCOUNT 4;
UPDATE Production.ProductInventory
SET Quantity = 400
WHERE Quantity < 300;
GO

(4 行処理されました)

関連項目

参照