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是語句LOCALDECLARE CURSOR建立之數據指標的名稱,其關鍵詞為 ,或預設為 LOCALlocal

當 @cursor_source 為 時,@cursor_identity是語句GLOBALDECLARE CURSOR建立之數據指標的名稱,其關鍵詞為 ,或預設為 GLOBALglobal @cursor_identity也可以是 ODBC 應用程式開啟的 API 伺服器資料指標名稱,然後藉由呼叫 SQLSetCursorName來命名數據指標。

當 @cursor_sourcevariable@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使用或 OPENROWSETOPENQUERY
objectid int 數據表的物件識別碼。 使用或 OPENROWSETOPENQUERY為 0。
dbid int 數據表所在的資料庫標識碼。使用或 OPENROWSETOPENQUERY為 0。
dbname sysname可為 Null 數據表所在的資料庫名稱。 NULL使用或 OPENROWSETOPENQUERY

備註

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