sp_describe_cursor_columns (Transact-SQL)
適用於:SQL Server
報表服務器資料指標結果集中資料行的屬性。
語法
sp_describe_cursor_columns
[ @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_variable OUTPUT
這是要接收資料指標輸出的宣告資料指標變數名稱。 output_cursor_variable 是 資料指標 ,沒有預設值,而且在呼叫sp_describe_cursor_columns時不得與任何資料指標產生關聯。 傳回的資料指標是可捲動的動態唯讀資料指標。
[ @cursor_source= ] { N'local' |N'global' |N'variable' }
指定所報告的資料指標是使用本機資料指標、全域資料指標或資料指標變數的名稱來指定。 參數為 Nvarchar(30) 。
[ @cursor_identity= ] N'local_cursor_name '
這是 DECLARE CURSOR 語句所建立的資料指標名稱,該語句具有 LOCAL 關鍵字或預設為 LOCAL。 local_cursor_name是 Nvarchar(128) 。
[ @cursor_identity= ] N'global_cursor_name '
這是 DECLARE CURSOR 語句所建立的資料指標名稱,該語句具有 GLOBAL 關鍵字或預設為 GLOBAL。 global_cursor_name 是 Nvarchar(128) 。
global_cursor_name 也可以是 ODBC 應用程式開啟的 API 伺服器資料指標名稱,然後藉由呼叫 SQLSetCursorName 來命名。
[ @cursor_identity= ] N'input_cursor_variable '
這是與開啟的資料指標相關聯的資料指標變數名稱。 input_cursor_variable是 Nvarchar(128) 。
傳回碼值
無
傳回的資料指標
sp_describe_cursor_columns將其報表封裝為 Transact-SQL 資料指標 輸出參數。 這可讓 Transact-SQL 批次、預存程式和觸發程式一次處理一個資料列。 這也表示無法直接從資料庫 API 函式呼叫程式。 資料 指標 輸出參數必須系結至程式變數,但資料庫 API 不支援系結 資料指標 參數或變數。
下表顯示使用 sp_describe_cursor_columns 傳回的資料指標格式。
資料行名稱 | 資料類型 | 描述 |
---|---|---|
column_name | sysname (可為 Null) | 指派給結果集資料行的名稱。 如果未指定資料行且沒有隨附的 AS 子句,則資料行為 Null。 |
ordinal_position | int | 結果集中最左邊資料行的資料行相對位置。 第一個資料行位於位置 0。 |
column_characteristics_flags | int | 位元遮罩,表示儲存在 OLE DB 中 DBCOLUMNFLAGS 中的資訊。 可以是下列其中一種或組合: 1 = 書簽 2 = 固定長度 4 = 可為 Null 8 = 資料列版本設定 16 = 可更新的資料行(針對沒有 FOR UPDATE 子句的資料指標投影資料行進行設定,如果有這類資料行,則每個資料指標只能有一個資料指標。 結合位值時,會套用合併位值的特性。 例如,如果位值為 6,則資料行是固定長度 (2),可為 Null 的 (4) 資料行。 |
column_size | int | 此資料行中值可能的大小上限。 |
data_type_sql | smallint | 指出資料行之 SQL Server 資料類型的數位。 |
column_precision | tinyint | 根據 OLE DB 中的 bPrecision 值,資料行的最大精確度。 |
column_scale | tinyint | 根據 OLE DB 中的 bScale 值,數值 或 十進位 資料類型 小數點 右邊的數位數目。 |
order_position | int | 如果資料行參與結果集的順序,則資料行在相對於最左邊資料行的順序索引鍵中的位置。 |
order_direction | Varchar(1) (可為 null) | A = 資料行是以順序索引鍵表示,且順序為遞增。 D = 資料行是順序索引鍵,而順序會遞減。 Null = 資料行不會參與排序。 |
hidden_column | smallint | 0 = 此資料行會出現在選取清單中。 1 = 保留供日後使用。 |
columnid | int | 基底資料行的資料行識別碼。 如果結果集資料行是從運算式建置的,columnid 為 -1。 |
objectid | int | 提供資料行之物件或基表的物件識別碼。 如果結果集資料行是從運算式建置的,objectid 為 -1。 |
dbid | int | 包含提供資料行之基表的資料庫識別碼。 如果結果集資料行是從運算式建置的,dbid 是 -1。 |
dbname | sysname (可為 null) |
包含提供資料行之基表的資料庫名稱。 如果結果集資料行是從運算式建置的,dbname 為 Null。 |
備註
sp_describe_cursor_columns描述伺服器資料指標結果集中資料行的屬性,例如每個資料指標的名稱和資料類型。 使用sp_describe_cursor來描述伺服器資料指標的全域屬性。 針對資料指標所參考之基表的報表使用sp_describe_cursor_tables。 若要取得連接上可見的 Transact-SQL 伺服器資料指標報表,請使用 sp_cursor_list。
權限
需要 public 角色中的成員資格。
範例
下列範例會開啟全域資料指標,並使用 sp_describe_cursor_columns
來報告資料指標中使用的資料行。
USE AdventureWorks2022;
GO
-- Declare and open a global cursor.
DECLARE abc CURSOR KEYSET FOR
SELECT LastName
FROM Person.Person;
GO
OPEN abc;
-- Declare a cursor variable to hold the cursor output variable
-- from sp_describe_cursor_columns.
DECLARE @Report CURSOR;
-- Execute sp_describe_cursor_columns into the cursor variable.
EXEC master.dbo.sp_describe_cursor_columns
@cursor_return = @Report OUTPUT
,@cursor_source = N'global'
,@cursor_identity = N'abc';
-- Fetch all the rows from the sp_describe_cursor_columns 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_columns.
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_describe_cursor (Transact-SQL)
sp_cursor_list (Transact-SQL)
sp_describe_cursor_tables (Transact-SQL)
系統預存程序 (Transact-SQL)
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應