sp_cursor_list (Transact-SQL)
適用於:SQL Server
報告目前為連接開啟的伺服器資料指標屬性。
語法
sp_cursor_list [ @cursor_return = ] cursor_variable_name OUTPUT
, [ @cursor_scope = ] cursor_scope
[;]
引數
[ @cursor_return= ] cursor_variable_name OUTPUT
這是宣告的資料指標變數名稱。 cursor_variable_name 為 資料指標 ,沒有預設值。 資料指標是可捲動的動態唯讀資料指標。
[ @cursor_scope= ] cursor_scope
指定要報告的資料指標層級。 cursor_scope 為 int ,沒有預設值,而且可以是下列其中一個值。
值 | 名稱 |
---|---|
1 | 報告所有本機資料指標。 |
2 | 報告所有全域資料指標。 |
3 | 同時報告本機和全域資料指標。 |
傳回碼值
無
傳回的資料指標
sp_cursor_list傳回其報表做為 Transact-SQL 資料指標輸出參數,而不是作為結果集。 這可讓 Transact-SQL 批次、預存程式和觸發程式一次處理一個資料列。 這也表示無法直接從資料庫 API 函式呼叫程式。 資料指標輸出參數必須系結至程式變數,但資料庫 API 不支援系結資料指標參數或變數。
這是sp_cursor_list所傳回的資料指標格式。 資料指標的格式與sp_describe_cursor所傳回的格式相同。
資料行名稱 | 資料類型 | 描述 |
---|---|---|
reference_name | sysname | 用來參考資料指標的名稱。 如果資料指標的參考是透過 DECLARE CURSOR 語句上指定的名稱,則參考名稱與資料指標名稱相同。 如果資料指標的參考是透過變數,則參考名稱是資料指標變數的名稱。 |
cursor_name | sysname | DECLARE CURSOR 語句中的資料指標名稱。 在 SQL Server 中,如果資料指標是藉由將資料指標變數設定為數據指標來建立, cursor_name 會傳回資料指標變數的名稱。 在舊版中,此輸出資料行會傳回系統產生的名稱。 |
cursor_scope | smallint | 1 = LOCAL 2 = GLOBAL |
status | smallint | 與CURSOR_STATUS系統函式所報告的值相同: 1 = 資料指標名稱或變數所參考的資料指標已開啟。 如果資料指標不區分、靜態或索引鍵集,則至少有一個資料列。 如果資料指標是動態的,結果集就會有零個或多個資料列。 0 = 資料指標名稱或變數所參考的資料指標已開啟,但沒有資料列。 動態資料指標永遠不會傳回此值。 -1 = 資料指標名稱或變數所參考的資料指標已關閉。 -2 = 僅適用于資料指標變數。 沒有指派給變數的資料指標。 可能,OUTPUT 參數會將資料指標指派給變數,但預存程式會在傳回之前關閉資料指標。 -3 = 具有指定名稱的資料指標或資料指標變數不存在,或者資料指標變數沒有配置給它的資料指標。 |
機型 | smallint | 1 = 不區分(或靜態) 2 = 索引鍵集 3 = 動態 4 = 快速向前 |
concurrency | smallint | 1 = 唯讀 2 = 捲動鎖定 3 = 開放式 |
滾動 | smallint | 0 = 正向 1 = 可捲動 |
open_status | smallint | 0 = 已關閉 1 = 開啟 |
cursor_rows | int | 結果集中限定資料列的數目。 如需詳細資訊,請參閱 @@CURSOR_ROWS 。 |
fetch_status | smallint | 此資料指標上最後一次擷取的狀態。 如需詳細資訊,請參閱 @@FETCH_STATUS : 0 = 擷取成功。 -1 = 擷取失敗,或超出資料指標的範圍。 -2 = 遺漏要求的資料列。 -9 = 資料指標上沒有擷取。 |
column_count | smallint | 資料指標結果集中的資料行數目。 |
row_count | smallint | 資料指標上最後一個作業所影響的資料列數目。 如需詳細資訊,請參閱 @@ROWCOUNT 。 |
last_operation | smallint | 在資料指標上執行的最後一個作業: 0 = 資料指標上未執行任何作業。 1 = OPEN 2 = FETCH 3 = INSERT 4 = UPDATE 5 = DELETE 6 = CLOSE 7 = DEALLOCATE |
cursor_handle | int | 識別伺服器範圍內資料指標的唯一值。 |
備註
sp_cursor_list產生連接所開啟之目前伺服器資料指標的清單,並描述每個資料指標的全域屬性,例如資料指標的捲動性和可更新性。 sp_cursor_list列出的資料指標包括:
Transact-SQL 伺服器資料指標。
由 ODBC 應用程式開啟的 API 伺服器資料指標,然後稱為 SQLSetCursorName 來命名資料指標。
使用sp_describe_cursor_columns來描述資料指標所傳回之結果集的屬性。 針對資料指標所參考之基表的報表使用sp_describe_cursor_tables。 sp_describe_cursor報告與sp_cursor_list相同的資訊,但僅適用于指定的資料指標。
權限
執行許可權預設為公用角色。
範例
下列範例會開啟全域資料指標,並使用 sp_cursor_list
來報告資料指標的屬性。
USE AdventureWorks2022;
GO
-- Declare and open a keyset-driven cursor.
DECLARE abc CURSOR KEYSET FOR
SELECT LastName
FROM Person.Person
WHERE LastName LIKE 'S%';
OPEN abc;
-- Declare a cursor variable to hold the cursor output variable
-- from sp_cursor_list.
DECLARE @Report CURSOR;
-- Execute sp_cursor_list into the cursor variable.
EXEC master.dbo.sp_cursor_list @cursor_return = @Report OUTPUT,
@cursor_scope = 2;
-- Fetch all the rows from the sp_cursor_list output cursor.
FETCH NEXT from @Report;
WHILE (@@FETCH_STATUS <> -1)
BEGIN
FETCH NEXT from @Report;
END
-- Close and deallocate the cursor from sp_cursor_list.
CLOSE @Report;
DEALLOCATE @Report;
GO
-- Close and deallocate the original cursor.
CLOSE abc;
DEALLOCATE abc;
GO
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應