Bonjour,
Lors du développement d’une procédure stockée, il est d’usage d’éviter l’utilisation des curseurs. Cependant ce n’est pas toujours possible. Il convient alors d’apprivoiser certaines subtilités.
Pour rappel, les curseurs permettent un parcourt ligne à ligne renvoyée par une requête de sélection (par exemple). Vous trouverez plus d’information sur leur usage sur Les procédures et les curseurs avec MS-SQL Server.
Après avoir chargé le curseur avec :
DECLARE curseur_1 CURSOR FOR (RQT)
puis avoir ouvert le curseur avec :
OPEN curseur_1
puis avoir récupéré le premier champ de la premiere ligne du curseur avec :
FETCH curseur_1 into @champ1
Un curseur se parcourt avec une boucle :
WHILE @@FETCH_STATUS = 0
BEGIN
Instructions
END
@@Fetch_Status retourne l’état de la dernière instruction FETCH effectuée sur un curseur actuellement ouvert par la connexion.
while fetch_status =0
while (SELECT fetch_status FROM sys.dm_exec_cursors(@@spid) where name = ‘curseur_1’ ) =0
Dans le cas d’une utilisation importante de procédures stockées potentiellement imbriquées, cette solution garantie les résultats.
Si vous avez la possibilité de ne pas utiliser de curseur, c’est encore mieux 😉
Bonne soirée,
Guillaume
Comments