sp_cursor_list (Transact-SQL)
適用対象:SQL Server
接続用に現在開いているサーバー カーソルの属性を報告します。
構文
sp_cursor_list [ @cursor_return = ] cursor_variable_name OUTPUT
, [ @cursor_scope = ] cursor_scope
[;]
引数
[ @cursor_return= ] cursor_variable_nameOUTPUT
宣言されたカーソル変数の名前です。 cursor_variable_name は カーソルであり、既定値はありません。 カーソルは、スクロール可能な動的な読み取り専用カーソルです。
[ @cursor_scope= ] cursor_scope
レポートするカーソルのレベルを指定します。 cursor_scope は int で、既定値は指定せず、これらの値のいずれかを指定できます。
値 | 説明 |
---|---|
1 | すべてのローカル カーソルをレポートします。 |
2 | すべてのグローバル カーソルをレポートします。 |
3 | ローカル カーソルとグローバル カーソルの両方をレポートします。 |
リターン コードの値
なし
返されるカーソル
sp_cursor_listは、結果セットとしてではなく、Transact-SQL カーソル出力パラメーターとしてレポートを返します。 これにより、Transact-SQL バッチ、ストアド プロシージャ、およびトリガーは、一度に 1 行ずつ出力を操作できます。 また、データベース API 関数からプロシージャを直接呼び出すことができなくなります。 カーソル出力パラメーターはプログラム変数にバインドする必要がありますが、データベース API ではカーソル パラメーターまたは変数のバインドはサポートされていません。
以下は、sp_cursor_list から返されるカーソルの形式です。 このカーソルの形式は、sp_describe_cursor から返される形式と同じです。
列名 | データ型 | 説明 |
---|---|---|
reference_name | sysname | カーソルを参照するために使用される名前。 カーソルへの参照が DECLARE CURSOR ステートメントで指定された名前を使用していた場合、参照名はカーソル名と同じです。 カーソルへの参照が変数を介していた場合、参照名はカーソル変数の名前です。 |
cursor_name | sysname | DECLARE CURSOR ステートメントに指定されたカーソルの名前です。 SQL Serverでは、カーソル変数をカーソルに設定してカーソルが作成された場合、cursor_nameはカーソル変数の名前を返します。 以前のリリースでは、この出力列はシステムによって生成された名前を返します。 |
cursor_scope | smallint | 1 = LOCAL 2 = GLOBAL |
status | smallint | CURSOR_STATUS システム関数によって報告されるのと同じ値。 1 = カーソル名または変数によって参照されるカーソルが開いています。 カーソルが状態非依存、静的、キーセットのいずれかの場合には、結果セットに少なくとも 1 行が含まれます。 カーソルが動的な場合、結果セットには 0 個以上の行があります。 0 = カーソル名または変数によって参照されるカーソルは開いていますが、行はありません。 動的カーソルがこの値を返すことはありません。 -1 = カーソル名または変数によって参照されたカーソルは閉じています。 -2 = カーソル変数にのみ適用されます。 変数にカーソルが割り当てされていません。 おそらく、OUTPUT パラメーターによってカーソルを変数に割り当てましたが、戻る前にストアド プロシージャがカーソルを閉じました。 -3 = 指定された名前のカーソルまたはカーソル変数が存在しないか、またはカーソル変数にカーソルが割り当てられていません。 |
model | smallint | 1 = 非依存 (または静的) 2 = キーセット 3 = 動的 4 = 高速順方向 |
concurrency | smallint | 1 = 読み取り専用 2 = スクロール ロック 3 = オプティミスティック |
scrollable | smallint | 0 = 順方向専用 1 = スクロール可能 |
open_status | smallint | 0 = クローズ 1 = 開く |
cursor_rows | int | 結果セット内の対象となる行の数。 詳細については、「 @@CURSOR_ROWS」を参照してください。 |
fetch_status | smallint | このカーソル上での最後のフェッチの状態です。 詳細については、「 @@FETCH_STATUS: 0 = フェッチに成功しました。 -1 = フェッチに失敗したか、カーソルの境界を超えています。 -2 = 要求された行がありません。 -9 = カーソル上でフェッチは行われていません。 |
column_count | smallint | カーソル結果セット内の列数。 |
row_count | smallint | カーソルに対する最後の操作の影響を受ける行の数。 詳細については、「 @@ROWCOUNT」を参照してください。 |
last_operation | smallint | カーソルに対して最後に実行された操作: 0 = カーソルに対して操作が実行されていません。 1 = OPEN 2 = FETCH 3 = INSERT 4 = UPDATE 5 = DELETE 6 = CLOSE 7 = DEALLOCATE |
cursor_handle | int | サーバーのスコープ内のカーソルを識別する一意の値。 |
解説
sp_cursor_list は、接続によってオープンされた現在のサーバー カーソルの一覧を作成し、カーソルのスクロール機能や更新機能など、各カーソルにとってグローバルな属性を示します。 sp_cursor_list によってレポートされるカーソルは次のとおりです。
Transact-SQL サーバー カーソル。
ODBC アプリケーションによってオープンされた API サーバー カーソル。この後、カーソルに名前を付けるために、SQLSetCursorName が呼び出されます。
カーソルから返された結果セットの属性の説明が必要な場合は、sp_describe_cursor_columns を使用します。 カーソルが参照するベース テーブルのレポートが必要な場合は、sp_describe_cursor_tables を使用します。 sp_describe_cursorはsp_cursor_listと同じ情報を報告しますが、指定したカーソルに対してのみレポートします。
アクセス許可
実行アクセス許可は、既定でパブリック ロールに設定されます。
例
次の例では、グローバル カーソルを開き、sp_cursor_list
を使用してカーソルの属性をレポートします。
USE AdventureWorks2022;
GO
-- Declare and open a keyset-driven cursor.
DECLARE abc CURSOR KEYSET FOR
SELECT LastName
FROM Person.Person
WHERE LastName LIKE 'S%';
OPEN abc;
-- Declare a cursor variable to hold the cursor output variable
-- from sp_cursor_list.
DECLARE @Report CURSOR;
-- Execute sp_cursor_list into the cursor variable.
EXEC master.dbo.sp_cursor_list @cursor_return = @Report OUTPUT,
@cursor_scope = 2;
-- Fetch all the rows from the sp_cursor_list output cursor.
FETCH NEXT from @Report;
WHILE (@@FETCH_STATUS <> -1)
BEGIN
FETCH NEXT from @Report;
END
-- Close and deallocate the cursor from sp_cursor_list.
CLOSE @Report;
DEALLOCATE @Report;
GO
-- Close and deallocate the original cursor.
CLOSE abc;
DEALLOCATE abc;
GO
参照
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示