Comment parcourir un result set sous MySQL

Publié le 16 Mai 2011

Pour parcourir un result set dans une procedure stockée mysql, il faut utiliser les curseurs et les boucles.

 

Commençons par la théorie:

- tout d'abord définir un curseur qui est lié à une requête avec DECLARE CURSOR

- puis on ouvre le curseur, ce qui va exécuter la requête avec OPEN CURSOR

Maintenant le curseur pointe sur le résultat de la requête.

- on utilise une boucle pour récupérer chaque ligne du curseur avec FETCH CURSOR

- on ferme le curseur avec CLOSE CURSOR

 

Maintenant passons au concret:

 

DECLARE country_name VARCHAR(255);
DECLARE country_size INT;
DECLARE country_cursor CURSOR FOR
   SELECT name, size FROM countries ORDER BY name;
 
DECLARE done INT DEFAULT 0;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
 
OPEN country_cursor;
 
country_loop: LOOP
   FETCH country_cursor INTO country_name, country_size;
   IF done THEN
      LEAVE country_loop;
   END IF;
   SELECT country_name ': ' country_size;
END LOOP;
  
CLOSE country_cursor;

 

Note: la variable 'done' est une petite astuce qui permet de sortir de la boucle lorsqu'il n'y a plus de lignes à parcourir.

La variable passe automatiquement à 1 si FETCH remonte une erreur NOT FOUND.

 

Tous les détails ici: http://dev.mysql.com/doc/refman/5.0/en/cursors.html

Rédigé par Bliz

Publié dans #MySQL

Repost 0
Pour être informé des derniers articles, inscrivez vous :
Commenter cet article