@@CURSOR_ROWS (Transact-SQL)
適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance
この関数は、接続で開かれた最後のカーソルに現在含まれている行の数を返します。 パフォーマンスを向上させるために、SQL Server では、大きなキーセットと静的カーソルを非同期に作成できます。 @@CURSOR_ROWS
を呼び出して、 @@CURSOR_ROWS
呼び出し時にカーソルを修飾する行の数が取得されることを確認できます。
構文
@@CURSOR_ROWS
戻り値の型
int
戻り値
戻り値 | 説明 |
---|---|
-m |
カーソルは非同期で作成されます。 返される値 (-m) は、現在キーセットにある行数です。 |
-1 |
カーソルが動的です。 動的カーソルはすべての変更を反映するので、そのカーソルに登録されている行数は常に変化します。 カーソルが必ずしもすべての修飾行を取得するとは限りません。 |
0 |
カーソルが開かれたり、最後に開かれたカーソルに修飾された行がない、最後に開いたカーソルが閉じられたり、割り当てが解除されたりします。 |
n |
カーソルに行がすべて完全に登録されている場合に返されます。 返される値 (n) には、カーソル内の行の合計数。 |
注釈
@@CURSOR_ROWS
は、最後のカーソルが非同期で開いた場合、負の数を返します。 sp_configure
カーソルのしきい値が0
を超え、カーソルの結果セット内の行数がカーソルのしきい値を超えた場合、キーセット ドライバーまたは静的カーソルは非同期的に開きます。
例
この例では、最初にカーソルを宣言し、SELECT
を使用して @@CURSOR_ROWS
の値を表示します。 カーソルが開く前は値 0
が設定され、その後、値 -1
が設定されることで、カーソル キーセットが非同期で作成されることを示します。
USE AdventureWorks2022;
GO
SELECT @@CURSOR_ROWS;
DECLARE Name_Cursor CURSOR
FOR
SELECT LastName, @@CURSOR_ROWS
FROM Person.Person;
OPEN Name_Cursor;
FETCH NEXT FROM Name_Cursor;
SELECT @@CURSOR_ROWS;
CLOSE Name_Cursor;
DEALLOCATE Name_Cursor;
GO
以下に結果セットを示します。
-----------
0
LastName (No column name) ROWSTAT
--------- ----------------- ---------
Sánchez -1 NULL
-----------
-1