分享方式:


sp_cursor_list (Transact-SQL)

適用於:SQL Server

報告目前為連接開啟的伺服器數據指標屬性。

Transact-SQL 語法慣例

語法

sp_cursor_list
    [ @cursor_return = ] cursor_return OUTPUT
    , [ @cursor_scope = ] cursor_scope
[ ; ]

引數

[ @cursor_return = ] cursor_return OUTPUT

宣告的數據指標變數名稱。 @cursor_return是 int 類型的 OUTPUT 參數。數據指標是可捲動的動態唯讀數據指標。

[ @cursor_scope = ] cursor_scope

指定要報告的數據指標層級。 @cursor_scope為 int,沒有預設值,而且可以是下列其中一個值。

Description
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 = 具有指定名稱的數據指標或數據指標變數不存在,或數據指標變數沒有配置給它的數據指標。
model smallint 1 = 不區分大小寫 (或靜態)
2 = 索引鍵集
3 = 動態
4 = 快速向前
concurrency smallint 1 = 唯讀
2 = 捲動鎖定
3 = 開放式
scrollable 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