@@FETCH_STATUS (Transact-SQL)
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance
Cette fonction retourne l’état de la dernière instruction FETCH effectuée sur l’un des curseurs actuellement ouverts par la connexion.
Conventions de la syntaxe Transact-SQL
Syntaxe
@@FETCH_STATUS
Type de retour
integer
Valeur de retour
Valeur retournée | Description |
---|---|
0 | L'instruction FETCH a réussi. |
-1 | L'instruction FETCH a échoué ou la ligne se situait au-delà du jeu de résultats. |
-2 | La ligne recherchée est manquante. |
-9 | Le curseur n’effectue pas d’opération de récupération (fetch). |
Remarques
La fonction @@FETCH_STATUS
étant commune à tous les curseurs de la connexion, utilisez-la avec précaution. Après l’exécution d’une instruction FETCH, le test @@FETCH_STATUS
doit avoir lieu avant qu’une autre instruction FETCH ne soit effectuée sur un autre curseur. @@FETCH_STATUS
n’est pas défini tant qu’aucune récupération ne s’est produite sur la connexion.
Supposons, par exemple, qu’un utilisateur exécute une instruction FETCH sur un curseur, puis appelle une procédure stockée qui ouvre et traite les résultats sur un autre curseur. Lorsque le contrôle est retourné à partir de cette procédure stockée, @@FETCH_STATUS
reflète la dernière instruction FETCH exécutée au sein de la procédure stockée et non celle qui avait eu lieu avant l’appel de la procédure stockée.
Pour récupérer le dernier état de récupération (fetch) d’un curseur spécifique, interrogez la colonne fetch_status de la fonction de gestion dynamique sys.dm_exec_cursors.
Exemples
Cet exemple utilise @@FETCH_STATUS
pour contrôler les activités d’un curseur dans une boucle 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