@@CURSOR_ROWS (Transact-SQL)
接続で最後にオープンされたカーソルに現在取得されている行数を返します。パフォーマンスを向上させるために、SQL Server では、大きなキーセットと静的カーソルを非同期に作成できます。@@CURSOR_ROWS を呼び出すと、カーソルに取得されている行が呼び出し時にいくつ検索されたかを判別できます。
構文
@@CURSOR_ROWS
戻り値の型
integer
戻り値
戻り値 |
説明 |
---|---|
-m |
行がカーソルに非同期的に登録されている場合に返されます。返される値 (-m) は、現在キーセットにある行数です。 |
-1 |
カーソルが動的な場合に返されます。動的カーソルはすべての変更を反映するので、そのカーソルに登録されている行数は常に変化します。したがって、登録されているすべての行を検索したかどうかは断定できません。 |
0 |
オープンされているカーソルがない場合、最後にオープンされたカーソルに行が登録されていない場合、または最後にオープンされたカーソルがクローズまたは割り当てを解除されている場合に返されます。 |
n |
カーソルに行がすべて完全に登録されている場合に返されます。返される値 (n) は、カーソルに含まれる行数の合計です。 |
説明
最後のカーソルが非同期にオープンされている場合、@@CURSOR_ROWS からの戻り値は負になります。sp_configure カーソルしきい値が 0 より大きく、カーソル結果セットの行数がカーソルしきい値を超える場合、キーセット カーソルまたは静的カーソルは非同期にオープンされます。
例
次の例では、カーソルを宣言し、SELECT を使用して @@CURSOR_ROWS の値を表示します。カーソルをオープンする前の値は 0 に設定されています。-1 の値は、カーソルのキーセットが非同期に作成されることを示します。
USE AdventureWorks2008R2;
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
---------------
Sanchez
-----------
-1