sp_describe_cursor_tables (Transact-SQL)

サーバー カーソルが参照するオブジェクトまたはベース テーブルをレポートします。

トピック リンク アイコン Transact-SQL 構文表記規則

構文

sp_describe_cursor_tables 
     [ @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_tables の呼び出し時には、この名前をどのカーソルにも関連付けないでください。 スクロール可能で動的な読み取り専用カーソルが返されます。

  • [ @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 には、ODBC アプリケーションによってオープンされた API サーバー カーソルの名前も指定できます。この ODBC アプリケーションでは、SQLSetCursorName を呼び出すことによってカーソルが指定されます。global_cursor_name のデータ型は nvarchar(128) です。

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

リターン コードの値

なし

返されるカーソル

sp_describe_cursor_tables は、そのレポートを Transact-SQL の cursor 型出力パラメーターとしてカプセル化します。 このため、Transact-SQL バッチ、ストアド プロシージャ、およびトリガーは一度に 1 行ずつ、出力を処理できます。 また、API 関数からプロシージャを直接呼び出すことができなくなります。 cursor 出力パラメーターはプログラム変数にバインドする必要がありますが、API では、cursor のパラメーターまたは変数のバインドがサポートされません。

次の表に、sp_describe_cursor_tables が返すカーソルの形式を示します。

列名

データ型

説明

table owner

sysname

テーブル所有者のユーザー ID。

Table_name

sysname

オブジェクトまたはベース テーブルの名前。 SQL Server では、サーバー カーソルが、ベース テーブルではなく常にユーザー指定のオブジェクトを返します。

Optimizer_hints

smallint

次のうちの 1 つ以上で構成されるビットマップです。

1 = 行レベルのロック (ROWLOCK)

4 = ページレベルのロック (PAGELOCK)

8 = テーブル ロック (TABLOCK)

16 = 排他テーブル ロック (TABLOCKX)

32 = 更新ロック (UPDLOCK)

64 = ロックなし (NOLOCK)

128 = 高速順方向参照 (FASTFIRST)

4096 = DECLARE CURSOR で使用する場合、反復可能セマンティックの読み取り (HOLDLOCK)

複数のオプションを指定する場合、システムは最も限定的なオプションを使用します。 ただし、sp_describe_cursor_tables は、クエリに指定されているフラグを表示します。

lock_type

smallint

カーソルの基になっている各ベース テーブルに対して、明示的にまたは暗黙的に要求したスクロール ロックの種類です。 値は、次のいずれかです。

0 = なし

1 = 共有

3 = 更新

server_name

sysname, nullable

テーブルが存在するリンク サーバーの名前。 OPENQUERY または OPENROWSET が使用されている場合は NULL です。

Objectid

int

テーブルのオブジェクト ID。 OPENQUERY または OPENROWSET が使用されている場合は 0 です。

dbid

int

テーブルが存在するデータベースの ID。 OPENQUERY または OPENROWSET が使用されている場合は 0 です。

dbname

sysname, nullable

テーブルが存在するデータベースの名前。 OPENQUERY または OPENROWSET が使用されている場合は NULL です。

説明

sp_describe_cursor_tables は、サーバー カーソルが参照するベース テーブルを説明します。 カーソルから返された結果セットの属性の説明が必要な場合は、sp_describe_cursor_columns を使用します。 スクロール可能かどうか、更新可能かどうかなど、カーソルの総体的な特性の説明が必要な場合は、sp_describe_cursor を使用します。 接続時に可視である Transact-SQL Server カーソルに関するレポートが必要な場合は、sp_cursor_list を使用します。

権限

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

使用例

次の例では、グローバルなカーソルをオープンし、sp_describe_cursor_tables を使用してカーソルが参照するテーブルをレポートします。

USE AdventureWorks2012;
GO
-- Declare and open a global cursor.
DECLARE abc CURSOR KEYSET FOR
SELECT LastName
FROM Person.Person
WHERE LastName LIKE 'S%';

OPEN abc;
GO
-- Declare a cursor variable to hold the cursor output variable
-- from sp_describe_cursor_tables.
DECLARE @Report CURSOR;

-- Execute sp_describe_cursor_tables into the cursor variable.
EXEC master.dbo.sp_describe_cursor_tables
      @cursor_return = @Report OUTPUT,
      @cursor_source = N'global', @cursor_identity = N'abc';

-- Fetch all the rows from the sp_describe_cursor_tables 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_tables.
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_cursor_list (Transact-SQL)

sp_describe_cursor (Transact-SQL)

sp_describe_cursor_columns (Transact-SQL)

システム ストアド プロシージャ (Transact-SQL)

概念

カーソル