Partager via


@@FETCH_STATUS (Transact-SQL)

Retourne l'état de la dernière instruction FETCH effectuée sur un curseur actuellement ouvert par la connexion.

Icône Lien de rubriqueConventions de syntaxe de Transact-SQL

Syntaxe

@@FETCH_STATUS

Type de retour

integer

Valeur de retour

Valeur de retour

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.

Notes

Étant donné que la variable @@FETCH_STATUS est commune à tous les curseurs d'une connexion, utilisez-la avec précaution. Après l'exécution d'une instruction FETCH, la vérification de @@FETCH_STATUS doit avoir lieu avant qu'une autre instruction FETCH ne soit effectuée sur un autre curseur. La valeur de @@FETCH_STATUS n'est pas définie avant l'exécution de recherches 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 pour un autre curseur. Lorsque le contrôle revient de la procédure stockée, @@FETCH_STATUS prend en compte la dernière instruction FETCH exécutée dans 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 d'extraction d'un curseur spécifique, interrogez la colonne fetch_status de la fonction de gestion dynamique sys.dm_exec_cursors.

Exemple

L'exemple suivant 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 AdventureWorks2008R2.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