sp_describe_cursor_columns (Transact-SQL)

サーバー カーソルの結果セットにある列の属性をレポートします。

トピック リンク アイコン 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_variable OUTPUT
    カーソル出力を受け取るように宣言したカーソル変数の名前です。 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 キーワードを指定した DECLARE CURSOR ステートメント、または既定値が LOCAL になっている DECLARE CURSOR ステートメントによって作成されたカーソルの名前を指定します。 local_cursor_name のデータ型は nvarchar(128) です。

  • [ @cursor\_identity= ] N'global_cursor_name'
    GLOBAL キーワードを指定した DECLARE CURSOR ステートメント、または既定値が GLOBAL になっている DECLARE CURSOR ステートメントによって作成されたカーソルの名前を指定します。 global_cursor_name のデータ型は nvarchar(128) です。

    global_cursor_name には、ODBC アプリケーションによってオープンされた API サーバー カーソルの名前も指定できます。この ODBC アプリケーションでは、SQLSetCursorName を呼び出すことによってカーソルが指定されます。

  • [ @cursor\_identity= ] N'input_cursor_variable'
    開いているカーソルに関連付けられたカーソル変数の名前です。 input_cursor_variable のデータ型は nvarchar(128) です。

リターン コードの値

なし

返されるカーソル

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 は、各カーソルの名前やデータ型など、サーバー カーソルの結果セットにある列の属性を示します。 サーバー カーソルにグローバルな属性の説明が必要な場合は、sp_describe_cursor を使用します。 カーソルが参照するベース テーブルのレポートが必要な場合は、sp_describe_cursor_tables を使用します。 接続時に可視である Transact-SQL サーバー カーソルに関するレポートが必要な場合は、sp_cursor_list を使用します。

権限

public ロールのメンバーシップが必要です。

使用例

次の例では、グローバル カーソルをオープンし、カーソルで使用されている列を sp_describe_cursor_columns を使用してレポートします。

USE AdventureWorks2012;
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)

概念

カーソル