sp_describe_cursor_tables (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 は、サーバー カーソルが参照するベース テーブルを説明します。カーソルから返された結果セットの属性の説明が必要な場合は、sp_describe_cursor_columns を使用します。スクロール可能かどうか、更新可能かどうかなど、カーソルの総体的な特性の説明が必要な場合は、sp_describe_cursor を使用します。接続時に可視である Transact-SQL Server カーソルに関するレポートが必要な場合は、sp_cursor_list を使用します。
権限
public ロールのメンバシップが必要です。
戻り値
なし
返されるカーソル
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 2005 では、サーバー カーソルが、ベース テーブルではなく常にユーザー指定のオブジェクトを返します。SQL Server 2000 では、WITH VIEW_METADATA を使用してビューまたは関数が作成される場合を除き、サーバー カーソルはベース テーブルを返します。 |
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
を使用してカーソルが参照するテーブルをレポートします。
USE AdventureWorks
GO
-- Declare and open a global cursor.
DECLARE abc CURSOR KEYSET FOR
SELECT LastName
FROM Person.Contact
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)