Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
SQL-adatbázis a Microsoft Fabricben
Ez a függvény visszaadja az utolsó kurzor FETCH kijelentésének státuszát, amelyet bármely a kapcsolat által nyitott kurzorhoz adott ki.
Transact-SQL szintaxis konvenciók
Szemantika
@@FETCH_STATUS
Visszatérési típus
egész szám
Visszaadott érték
| Visszaadott érték | Description |
|---|---|
| 0 | A FETCH nyilatkozat sikeres volt. |
| -1 | A FETCH kijelentés meghibásodott, vagy a sor túlmutatott az eredményhalmazon. |
| -2 | A lehozott sor hiányzik. |
| -9 | A kurzor nem hajt végre behozási műveletet. |
Megjegyzések
Mivel @@FETCH_STATUS globális, minden kurzor számára egy kapcsolaton, használd óvatosan. Egy FETCH utasítás végrehajtása után a tesztnek @@FETCH_STATUS meg kell történnie, mielőtt bármely más FETCH utasítás egy másik kurzor ellen végrehajtható.
@@FETCH_STATUS nem definiált, mielőtt bármilyen hívás történt volna a kapcsolaton.
Például egy felhasználó egy FETCH utasítást futtat egy kurzorból, majd meghív egy tárolt eljárást, amely megnyitja és feldolgozza az eredményt egy másik kurzorból. Amikor a vezérlő visszatér az adott tárolt eljárásból, @@FETCH_STATUS az az utolsó FETCH utasítást mutatja be, amely az adott tárolt eljárásban végrehajtott, nem pedig a tárolt eljárás hívása előtt végrehajtott FETCH utasítást.
Egy adott kurzor utolsó fetch státuszának megkereséséhez lekérdezzük a sys.dm_exec_cursors dinamikus menedzsment függvény fetch_status oszlopát.
Példák
Ez a példa @@FETCH_STATUS a kurzor műveletek vezérlésére szolgál egy WHILE ciklusban.
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