@@FETCH_STATUS (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure 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  

Remarque

Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 (12.x) et versions antérieures, consultez Versions antérieures de la documentation.

Type renvoyé

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  

Voir aussi

Fonctions de curseur (Transact-SQL)
FETCH (Transact-SQL)