@@FETCH_STATUS (Transact-SQL)
適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體
此函數會傳回針對連接目前開啟的任何資料指標所發出的最後一個資料指標 FETCH 陳述式的狀態。
Syntax
@@FETCH_STATUS
注意
若要檢視 SQL Server 2014 (12.x) 和舊版的 Transact-SQL 語法,請參閱 舊版檔。
傳回類型
integer
傳回值
傳回值 | 描述 |
---|---|
0 | FETCH 陳述式成功。 |
-1 | FETCH 陳述式失敗,或資料列已超出結果集。 |
-2 | 遺漏提取的資料列。 |
-9 | 資料指標並未執行擷取作業。 |
備註
由於 @@FETCH_STATUS
在連線的所有資料指標的全域範圍內有效,因此,請小心使用。 在執行 FETCH 陳述式之後,@@FETCH_STATUS
的測試必須在針對另一個資料指標執行任何其他 FETCH 陳述式之前進行。 在連線進行任何擷取之前,並未定義 @@FETCH_STATUS
。
例如,使用者從一個資料指標執行 FETCH 陳述式,然後再呼叫預存程序來開啟和處理來自另一個資料指標的結果。 當控制權從所呼叫的預存程序傳回時,@@FETCH_STATUS
會反映預存程序中所執行的最後一個 FETCH,而不是在呼叫預存程序之前執行的 FETCH 陳述式。
若要擷取特定資料指標的最後一個擷取狀態,請查詢 sys.dm_exec_cursors 動態管理函式的 fetch_status 資料行。
範例
此範例使用 @@FETCH_STATUS
控制 WHILE
迴圈中的資料指標活動。
DECLARE Employee_Cursor CURSOR FOR
SELECT BusinessEntityID, JobTitle
FROM AdventureWorks2022.HumanResources.Employee;
OPEN Employee_Cursor;
FETCH NEXT FROM Employee_Cursor;
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM Employee_Cursor;
END;
CLOSE Employee_Cursor;
DEALLOCATE Employee_Cursor;
GO
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應