sp_describe_cursor_columns (Transact-SQL)
適用対象: SQL Server
サーバー カーソルの結果セットにある列の属性をレポートします。
構文
sp_describe_cursor_columns
[ @cursor_return = ] cursor_return OUTPUT
, [ @cursor_source = ] { N'local' | N'global' | N'*cursor_source*' }
, [ @cursor_identity = ] N'cursor_identity'
[ ; ]
引数
[ @cursor_return = ] cursor_return OUTPUT
カーソル出力を受け取る宣言済みカーソル変数の名前。 @cursor_return は、既定値のない int 型の OUTPUT パラメーターであり、 sp_describe_cursor_columns
が呼び出された時点でカーソルに関連付けてはなりません。 返されるカーソルは、スクロール可能な動的な読み取り専用カーソルです。
[ @cursor_source = ] { N'local' |N'global' |N'cursor_source' }
local カーソル、global カーソル、またはカーソル変数の名前を使用して、報告対象のカーソルを指定するかどうかを指定します。 @cursor_source は nvarchar(30)で、既定値はありません。
[ @cursor_identity = ] N'cursor_identity'
DECLARE CURSOR
ステートメントによって作成されたカーソルの名前。 @cursor_identity は nvarchar(128)で、既定値はありません。
カーソルに
LOCAL
キーワードがある場合、または既定でLOCAL
に設定されている場合、 @cursor_identity はlocal
。カーソルに
GLOBAL
キーワードがある場合、または既定でGLOBAL
に設定されている場合、 @cursor_identity はglobal
。 @cursor_identity ODBC アプリケーションによって開かれた API サーバー カーソルの名前を指定し、SQLSetCursorName
を呼び出すことによって名前を付けることもできます。それ以外の場合、 @cursor_identity は、開いているカーソルに関連付けられているカーソル変数の名前です。
リターン コードの値
なし。
返されるカーソル
sp_describe_cursor_columns
は、そのレポートを Transact-SQL cursor
出力パラメーターとしてカプセル化します。 これにより、Transact-SQL のバッチ、ストアド プロシージャ、およびトリガーは、一度に 1 行ずつ出力を操作できます。 これは、データベース API 関数からプロシージャを直接呼び出すことはできません。 cursor
出力パラメーターはプログラム変数にバインドする必要がありますが、データベース API ではcursor
パラメーターまたは変数のバインドはサポートされていません。
次の表は、 sp_describe_cursor_columns
を使用して返されるカーソルの形式を示しています。
列名 | データ型 | 説明 |
---|---|---|
column_name |
sysname | 結果セット列に割り当てられた名前です。 列がAS 句なしで指定された場合、列はNULL されます。Null 許容。 |
ordinal_position |
int | 結果セットで左端の列を基準とする列の相対位置です。 最初の列は、 0 位置にあります。 |
column_characteristics_flags |
int | OLE DB の DBCOLUMNFLAGS に格納されている情報を示すビットマスク。 1 つまたは次の値の組み合わせを指定できます。1 = ブックマーク2 = 固定長4 = Nullable8 = 行のバージョン管理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 値に従って、数値型または decimal データ型の小数点の右側の桁数。 |
order_position |
int | 列が結果セットの順序に含まれる場合、左端の列を基準にした順序キー内の列の位置。 |
order_direction |
varchar(1) | A = 列は順序キーにあり、順序は昇順です。D = 列は order キーにあり、順序は降順です。NULL = 列は順序付けに関与しません。Null 許容。 |
hidden_column |
smallint | 0 = この列は選択リストに表示されます。1 = 将来使用するために予約されています。 |
columnid |
int | ベース列の列 ID。 結果セット列が式から作成された場合、 columnid は -1 。 |
objectid |
int | 列を指定するオブジェクトまたはベース テーブルのオブジェクト ID。 結果セット列が式から作成された場合、 objectid は -1 。 |
dbid |
int | 列の値を提供するベース テーブルを含むデータベースの ID です。 結果セット列が式から作成された場合、 dbid は -1 。 |
dbname |
sysname | 列を指定するベース テーブルを含むデータベースの名前。 結果セット列が式から作成された場合、dbname は NULL 。Null 許容。 |
解説
sp_describe_cursor_columns
は、各カーソルの名前やデータ型など、サーバー カーソルの結果セット内の列の属性を記述します。 サーバー カーソルのグローバル属性の説明には、 sp_describe_cursor
を使用します。 カーソルによって参照されるベース テーブルのレポートには、 sp_describe_cursor_tables
を使用します。 接続に表示されている Transact-SQL サーバー カーソルのレポートを取得するには、 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