sp_describe_cursor_columns (Transact-SQL)
適用対象:SQL Server
サーバー カーソルの結果セットにある列の属性をレポートします。
構文
sp_describe_cursor_columns
[ @cursor_return = ] output_cursor_variable OUTPUT
{ [ , [ @cursor_source = ] N'local' ,
[ @cursor_identity = ] N'local_cursor_name' ]
| [ , [ @cursor_source = ] N'global' ,
[ @cursor_identity = ] N'global_cursor_name' ]
| [ , [ @cursor_source = ] N'variable' ,
[ @cursor_identity = ] N'input_cursor_variable' ]
}
引数
[ @cursor_return= ] output_cursor_variable OUTPUT
カーソル出力を受け取るように宣言したカーソル変数の名前です。 output_cursor_variable は カーソルであり、既定値は指定されず、sp_describe_cursor_columnsが呼び出された時点でカーソルに関連付けてはなりません。 返されるカーソルは、スクロール可能で動的な読み取り専用カーソルです。
[ @cursor_source= ] { N'local' |N'global' |N'variable' }
ローカル カーソル、グローバル カーソル、またはカーソル変数の名前を使用して、報告対象のカーソルを指定するかどうかを指定します。 パラメーターは nvarchar(30)です。
[ @cursor_identity= ] N'local_cursor_name'
LOCAL キーワードを持つか、既定で LOCAL に設定されている DECLARE CURSOR ステートメントによって作成されたカーソルの名前を指定します。 local_cursor_name は nvarchar(128)です。
[ @cursor_identity= ] N'global_cursor_name'
GLOBAL キーワードを持つか、既定で GLOBAL に設定されている DECLARE CURSOR ステートメントによって作成されたカーソルの名前を指定します。 global_cursor_name は nvarchar(128)です。
global_cursor_name は、ODBC アプリケーションによって開かれた後、SQLSetCursorName を呼び出して名前を付ける API サーバー カーソルの名前を指定することもできます。
[ @cursor_identity= ] N'input_cursor_variable'
開いているカーソルに関連付けられたカーソル変数の名前です。 input_cursor_variable は nvarchar(128)です。
リターン コードの値
なし
返されるカーソル
sp_describe_cursor_columnsは、レポートを Transact-SQL カーソル 出力パラメーターとしてカプセル化します。 これにより、Transact-SQL のバッチ、ストアド プロシージャ、およびトリガーは、一度に 1 行ずつ出力を処理できます。 これは、データベース API 関数からプロシージャを直接呼び出すことができないことも意味します。 カーソル出力パラメーターはプログラム変数にバインドする必要がありますが、データベース API ではカーソル・パラメーターまたは変数のバインドはサポートされていません。
次の表に、sp_describe_cursor_columns が返すカーソルの形式を示します。
列名 | データ型 | 説明 |
---|---|---|
column_name | sysname (null 許容) | 結果セット列に割り当てられた名前です。 列が付随する AS 句なしで指定された場合、列は NULL です。 |
ordinal_position | int | 結果セットで左端の列を基準とする列の相対位置です。 最初の列の位置は 0 です。 |
column_characteristics_flags | int | OLE DB の DBCOLUMNFLAGS に格納されている情報を示すビットマスク。 1 つまたは次の組み合わせを指定できます。 1 = ブックマーク 2 = 固定長 4 = NULL 値を許容 8 = 行のバージョン管理 16 = 更新可能な列 (FOR UPDATE 句がないカーソルの投影列に対して設定され、そのような列がある場合は、カーソルごとに 1 つだけを指定できます)。 ビット値を結合すると、結合されたビット値の特性が適用されます。 たとえば、ビット値が 6 の場合、列は固定長 (2)、null 許容 (4) 列です。 |
column_size | int | この列で可能な値の最大サイズです。 |
data_type_sql | smallint | 列のSQL Serverデータ型を示す数値。 |
column_precision | tinyint | OLE DB の bPrecision 値に従った列の最大有効桁数。 |
column_scale | tinyint | OLE DB の bScale 値に従って、数値型または 10 進数データ型の小数点の右側の桁数。 |
order_position | int | 列が結果セットの順序に含まれる場合、左端の列を基準にした順序キー内の列の位置。 |
order_direction | varchar(1)(null 許容) | A = 列は順序キーにあり、順序は昇順です。 D = 列は順序キーにあり、順序付けは降順です。 NULL = 列は順序付けに関係しません。 |
hidden_column | smallint | 0 = この列は選択リストに表示されます。 1 = 将来使用するために予約されています。 |
columnid | int | ベース列の列 ID。 結果セット列が式で構成されている場合、columnid は -1 です。 |
objectid | int | 列を指定するオブジェクトまたはベース テーブルのオブジェクト ID。 結果セット列が式で構成されている場合、objectid は -1 です。 |
dbid | int | 列の値を提供するベース テーブルを含むデータベースの ID です。 結果セット列が式で構成されている場合、dbid は -1 です。 |
dbname | sysname (null 許容) |
列を指定するベース テーブルを含むデータベースの名前。 結果セット列が式で構成されている場合、dbname は NULL です。 |
解説
sp_describe_cursor_columns は、各カーソルの名前やデータ型など、サーバー カーソルの結果セットにある列の属性を示します。 サーバー カーソルにグローバルな属性の説明が必要な場合は、sp_describe_cursor を使用します。 カーソルが参照するベース テーブルのレポートが必要な場合は、sp_describe_cursor_tables を使用します。 接続時に可視である Transact-SQL Server カーソルのレポートが必要な場合は、sp_cursor_list を使用します。
アクセス許可
public ロールのメンバーシップが必要です。
例
次の例では、グローバル カーソルをオープンし、カーソルで使用されている列を sp_describe_cursor_columns
を使用してレポートします。
USE AdventureWorks2022;
GO
-- Declare and open a global cursor.
DECLARE abc CURSOR KEYSET FOR
SELECT LastName
FROM Person.Person;
GO
OPEN abc;
-- Declare a cursor variable to hold the cursor output variable
-- from sp_describe_cursor_columns.
DECLARE @Report CURSOR;
-- Execute sp_describe_cursor_columns into the cursor variable.
EXEC master.dbo.sp_describe_cursor_columns
@cursor_return = @Report OUTPUT
,@cursor_source = N'global'
,@cursor_identity = N'abc';
-- Fetch all the rows from the sp_describe_cursor_columns output cursor.
FETCH NEXT from @Report;
WHILE (@@FETCH_STATUS <> -1)
BEGIN
FETCH NEXT from @Report;
END
-- Close and deallocate the cursor from sp_describe_cursor_columns.
CLOSE @Report;
DEALLOCATE @Report;
GO
-- Close and deallocate the original cursor.
CLOSE abc;
DEALLOCATE abc;
GO
参照
カーソル
CURSOR_STATUS (Transact-SQL)
DECLARE CURSOR (Transact-SQL)
sp_describe_cursor (Transact-SQL)
sp_cursor_list (Transact-SQL)
sp_describe_cursor_tables (Transact-SQL)
システム ストアド プロシージャ (Transact-SQL)
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示