sp_describe_cursor_tables (Transact-SQL)
適用於:SQL Server
報告伺服器數據指標所參考的物件或基表。
語法
sp_describe_cursor_tables
[ @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是 OUTPUT 數據指標,沒有預設值,而且在呼叫時sp_describe_cursor_tables
不得與任何數據指標產生關聯。 傳回的數據指標是可捲動的動態只讀數據指標。
[ @cursor_source = ] { N'local' |N'global' |N'cursor_source' }
指定所報告的數據指標是使用本機數據指標、全域數據指標或數據指標變數的名稱來指定。 @cursor_source為 nvarchar(30),沒有預設值。
[ @cursor_identity = ] N'cursor_identity'
當 @cursor_source 為 時,@cursor_identity是語句LOCAL
所DECLARE CURSOR
建立之數據指標的名稱,其關鍵詞為 ,或預設為 LOCAL
。local
當 @cursor_source 為 時,@cursor_identity是語句GLOBAL
所DECLARE CURSOR
建立之數據指標的名稱,其關鍵詞為 ,或預設為 GLOBAL
。global
@cursor_identity也可以是 ODBC 應用程式開啟的 API 伺服器資料指標名稱,然後藉由呼叫 SQLSetCursorName
來命名數據指標。
當 @cursor_source 為 variable
時,@cursor_identity是與開啟數據指標相關聯的數據指標變數名稱。
@cursor_identity為 nvarchar(128),沒有預設值。
傳回碼值
無。
傳回的數據指標
sp_describe_cursor_tables
將其報表封裝為 Transact-SQL 數據指標 輸出參數。 這可讓 Transact-SQL 批次、預存程式和觸發程式一次處理一個數據列。 這也表示無法直接從 API 函式呼叫程式。 數據 指標 輸出參數必須係結至程式變數,但 API 不支援係結 數據指標 參數或變數。
下表顯示 所 sp_describe_cursor_tables
傳回之數據指標的格式。
資料行名稱 | 資料類型 | 描述 |
---|---|---|
table_owner |
sysname | 數據表擁有者的使用者標識碼。 |
table_name |
sysname | 物件或基表的名稱。 在 SQL Server 中,伺服器數據指標一律會傳回使用者指定的物件,而不是基表。 |
optimizer_hint |
smallint | 由下列一或多個選項組成的點陣圖: 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,可為 Null | 數據表所在的連結伺服器名稱。 NULL 使用或 OPENROWSET 時OPENQUERY 。 |
objectid |
int | 數據表的物件識別碼。 使用或 OPENROWSET 時OPENQUERY 為 0。 |
dbid |
int | 數據表所在的資料庫標識碼。使用或 OPENROWSET 時OPENQUERY 為 0。 |
dbname |
sysname, 可為 Null | 數據表所在的資料庫名稱。 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