sp_describe_cursor_columns (Transact-SQL)
サーバー カーソルの結果セットにある列の属性をレポートします。
構文
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_variableOUTPUT
カーソル出力を受け取るように宣言したカーソル変数の名前です。output_cursor_variable は cursor であり、既定値はありません。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 は、各カーソルの名前やデータ型など、サーバー カーソルの結果セットにある列の属性を示します。サーバー カーソルにグローバルな属性の説明が必要な場合は、sp_describe_cursor を使用します。カーソルが参照するベース テーブルのレポートが必要な場合は、sp_describe_cursor_tables を使用します。接続時に可視になる Transact-SQL Server カーソルのレポートが必要な場合は、sp_cursor_list を使用します。
権限
public ロールのメンバシップである必要があります。
戻り値
なし
返されるカーソル
sp_describe_cursor_columns は、そのレポートを Transact-SQL の cursor 型出力パラメータとしてカプセル化します。このため、Transact-SQL バッチ、ストアド プロシージャ、およびトリガは一度に 1 行ずつ、出力を処理できます。また、データベース API 関数からプロシージャを直接呼び出すことができなくなります。cursor 型出力パラメータはプログラム変数にバインドする必要がありますが、API では cursor 型パラメータまたは変数のバインドがサポートされません。
次の表に、sp_describe_cursor_columns が返すカーソルの形式を示します。
列名 | データ型 | 説明 |
---|---|---|
column_name |
sysname (NULL 値を許容) |
結果セット列に割り当てられた名前です。AS 句なしで列を指定した場合、列は NULL になります。 |
ordinal_position |
int |
結果セットで左端の列を基準とする列の相対位置です。最初の列の位置は 0 です。 |
column_characteristics_flags |
int |
OLE DB の DBCOLUMNFLAGS に格納された情報を示すビットマスクです。次のいずれか、または組み合わせで示します。 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 値に指定された numeric 型または decimal 型の小数点以下桁数です。 |
order_position |
int |
列が結果セットの順序付けに関係する場合、左端の列を基準とする順序キーでの列の相対位置です。 |
order_direction |
varchar(1) (NULL 値を許容) |
A = 列は順序キーにあり、順序付けは昇順です。 D = 列は順序キーにあり、順序付けは降順です。 NULL = 列は順序付けに関係しません。 |
hidden_column |
smallint |
0 = この列は選択リストに表示されます。 1 = 予約済みです。 |
columnid |
int |
基になる列の列 ID です。結果セット列が式で構成されている場合、columnid は -1 です。 |
objectid |
int |
オブジェクトのオブジェクト ID、または列の値を提供するベース テーブルのオブジェクト ID です。結果セット列が式で構成されている場合、objectid は -1 です。 |
dbid |
int |
列の値を提供するベース テーブルを含むデータベースの ID です。結果セット列が式で構成されている場合、dbid は -1 です。 |
dbname |
sysname (NULL 値を許容) |
列の値を提供するベース テーブルを含むデータベースの名前です。結果セット列が式で構成されている場合、dbname は NULL です。 |
例
次の例では、グローバル カーソルをオープンし、sp_describe_cursor_columns を使用して、カーソルで使用する列をレポートします。
USE AdventureWorks;
GO
-- Declare and open a global cursor.
DECLARE abc CURSOR KEYSET FOR
SELECT LastName
FROM Person.Contact
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)