SET ROWCOUNT (Transact-SQL)
指定の行数が返された後、SQL Server のクエリの処理を停止します。
構文
SET ROWCOUNT { number | @number_var }
引数
number| **@**number_var
特定のクエリを停止するまでに処理される行数を整数で指定します。
解説
重要 : |
---|
SQL Server の次のリリースでは、SET ROWCOUNT を使用しても DELETE、INSERT、UPDATE の各ステートメントには反映されなくなります。新しい開発作業では、SET ROWCOUNT を DELETE、INSERT、UPDATE ステートメントと共に使用するのは避け、現在この組み合わせで使用しているアプリケーションでは変更することを検討してください。また、現在 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 AdventureWorks;
GO
SELECT count(*) AS Count
FROM Production.ProductInventory
WHERE Quantity < 300;
GO
以下に結果セットを示します。
Count
-----------
537
(1 row(s) affected)
ここで、ROWCOUNT
を 4
に設定し、Quantity
が 300
より少ないという条件ですべての行を更新します。
SET ROWCOUNT 4;
UPDATE Production.ProductInventory
SET Quantity = 400
WHERE Quantity < 300;
GO
(4 row(s) affected)