sp_cursor_list (Transact-SQL)
報告連接目前所開啟之伺服器資料指標的屬性。
語法
sp_cursor_list [ @cursor_return = ] cursor_variable_name OUTPUT
, [ @cursor_scope = ] cursor_scope
引數
[@cursor_return = ] cursor_variable_nameOUTPUT
這是宣告資料指標變數的名稱。cursor_variable_name 是 cursor,沒有預設值。資料指標是一個可捲動的動態唯讀資料指標。[@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 = 含指定名稱的資料指標或資料指標變數不存在,或資料指標變數還沒有配置資料指標。 |
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 相同的資訊,但只針對指定的資料指標。
權限
執行權限預設會授與 public 角色。
範例
下列範例會開啟一個全域資料指標,且會利用 sp_cursor_list 來報告資料指標的屬性。
USE AdventureWorks
GO
-- Declare and open a keyset-driven cursor.
DECLARE abc CURSOR KEYSET FOR
SELECT LastName
FROM Person.Contact
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