sp_describe_cursor_tables (Transact-SQL)

適用対象:SQL Server

サーバー カーソルによって参照されるオブジェクトまたはベース テーブルを報告します。

Transact-SQL 構文表記規則

構文

sp_describe_cursor_tables
    [ @cursor_return = ] cursor_return OUTPUT
    , [ @cursor_source = ] { N'local' | N'global' | N'variable' }
    , [ @cursor_identity = ] N'cursor_identity'
[ ; ]

引数

[ @cursor_return = ] cursor_return OUTPUT

カーソル出力を受け取る宣言済みカーソル変数の名前。 @cursor_returnは、既定値のない OUTPUT カーソルであり、呼び出された時点sp_describe_cursor_tablesでカーソルに関連付けてはなりません。 返されるカーソルは、スクロール可能な動的な読み取り専用カーソルです。

[ @cursor_source = ] { N'local' |N'global' |N'variable' }

ローカル カーソル、グローバル カーソル、またはカーソル変数の名前を使用して、報告対象のカーソルを指定するかどうかを指定します。 @cursor_sourceは nvarchar(30) で、既定値はありません。

[ @cursor_identity = ] N'cursor_identity'

@cursor_sourceが指定されている場合@cursor_identityは、ステートメントによって作成されたDECLARE CURSORカーソルの名前で、キーワード (keyword)を持つかLOCAL、既定LOCALで .local

@cursor_sourceが指定されている場合@cursor_identityは、ステートメントによって作成されたDECLARE CURSORカーソルの名前で、キーワード (keyword)を持つかGLOBAL、既定GLOBALで .global @cursor_identityは、ODBC アプリケーションによって開かれた API サーバー カーソルの名前で、呼び出SQLSetCursorNameしてカーソルに名前を付けることもできます。

@cursor_sourcevariable場合@cursor_identityは開いているカーソルに関連付けられているカーソル変数の名前です。

@cursor_identityは nvarchar(128) で、既定値はありません。

リターン コードの値

なし。

返されるカーソル

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

次の表は、.. によって返される sp_describe_cursor_tablesカーソルの形式を示しています。

列名 データ型 説明
table_owner sysname テーブル所有者のユーザー ID。
table_name sysname オブジェクトまたはベース テーブルの名前。 SQL Server では、サーバー カーソルは常に、基本テーブルではなく、ユーザー指定のオブジェクトを返します。
optimizer_hint smallint 次のオプションの 1 つ以上で構成されるビットマップ。

1 = 行レベルのロック (ROWLOCK)
4 = ページ レベルのロック (PAGELOCK)
8 = テーブル ロック (TABLOCK)
16 = 排他テーブル ロック (TABLOCKX)
32 = 更新ロック (UPDLOCK)
64 = ロックなし (NOLOCK)
128 = 高速先頭行オプション (FASTFIRST)
4096 = (HOLDLOCK) と共DECLARE CURSORに使用した場合の読み取り反復可能セマンティック

複数のオプションを指定する場合、システムは最も限定的なオプションを使用します。 ただし、 sp_describe_cursor_tables クエリで指定されているフラグが表示されます。
lock_type smallint スクロール ロックの種類は、このカーソルの基になる各ベース テーブルに対して明示的または暗黙的に要求されます。 値には、次のいずれかのオプションを指定できます。

0 = なし
1 = 共有
3 = 更新
server_name sysname、null 許容 テーブルが存在するリンク サーバーの名前。 NULL使用する場合、またはOPENROWSET使用される場合OPENQUERY
objectid int テーブルのオブジェクト ID。 使用時 OPENQUERY または OPENROWSET 使用時は 0。
dbid int テーブルが存在するデータベースの ID。使用時 OPENQUERY または OPENROWSET 使用時は 0。
dbname sysnamenull 許容 テーブルが存在するデータベースの名前。 NULL使用する場合、またはOPENROWSET使用される場合OPENQUERY

解説

sp_describe_cursor_tables は、サーバー カーソルによって参照されるベース テーブルを表します。 カーソルによって返される結果セットの属性の説明については、次を使用 sp_describe_cursor_columnsします。 カーソルのグローバル特性 (スクロール可能性や更新可能性など) の説明については、次を使用します sp_describe_cursor。 接続に表示される Transact-SQL サーバー カーソルのレポートを取得するには、次を使用 sp_cursor_listします。

アクセス許可

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

次の例では、グローバル カーソルを開き、カーソルによって参照されるテーブルをレポートするために使用 sp_describe_cursor_tables します。

USE AdventureWorks2022;
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