Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-database in Microsoft Fabric
Deze functie geeft de status terug van de laatste cursor FETCH-instructie die is uitgegeven tegen elke cursor die momenteel door de verbinding is geopend.
Transact-SQL syntaxis-conventies
Syntaxis
@@FETCH_STATUS
Retourtype
geheel getal
Retourwaarde
| Retourwaarde | Description |
|---|---|
| 0 | De FETCH-verklaring was succesvol. |
| -1 | De FETCH-instructie faalde of de rij lag buiten de resultaatset. |
| -2 | De opgehaalde rij ontbreekt. |
| -9 | De cursor voert geen ophaaloperatie uit. |
Opmerkingen
Omdat @@FETCH_STATUS globaal is voor alle cursors op een verbinding, gebruik het zorgvuldig. Nadat een FETCH-instructie is uitgevoerd, moet de test voor @@FETCH_STATUS plaatsvinden voordat een andere FETCH-instructie wordt uitgevoerd tegen een andere cursor.
@@FETCH_STATUS is ongedefinieerd voordat er enige fetches op de verbinding hebben plaatsgevonden.
Bijvoorbeeld, een gebruiker voert een FETCH-instructie uit vanaf één cursor en roept vervolgens een opgeslagen procedure aan die resultaten opent en verwerkt van een andere cursor. Wanneer de controle terugkeert van die aangeroepen opgeslagen procedure, @@FETCH_STATUS weerspiegelt dit de laatste FETCH die binnen die opgeslagen procedure is uitgevoerd, niet de FETCH-instructie die vóór de aanroep naar de opgeslagen procedure is uitgevoerd.
Om de laatste ophaalstatus van een specifieke cursor op te halen, raadpleeg je de fetch_status kolom van de sys.dm_exec_cursors dynamische beheerfunctie.
Voorbeelden
Dit voorbeeld wordt gebruikt @@FETCH_STATUS om cursoractiviteiten in een WHILE lus te regelen.
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