@@FETCH_STATUS (Transact-SQL)
Retourne l'état de la dernière instruction FETCH effectuée sur un curseur actuellement ouvert par la connexion.
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
Cet exemple utilise @@FETCH_STATUS pour contrôler les activités d'un curseur dans une boucle WHILE.
DECLARE Employee_Cursor CURSOR FOR
SELECT EmployeeID, Title FROM AdventureWorks.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