Formation PUB200 : MySQL, 2018 Les curseurs

18.4 Autres styles de boucles pour les curseurs


Voici d'autres algorithmes pour boucler dans un curseur. Vous pouvez utiliser l'un ou l'autre selon vos préférences.

REPEAT UNTIL

MySQL

CREATE PROCEDURE traiter_mecaniciens()

BEGIN

    -- entête standard

 

    -- déclaration de variables locales

    ...

 

    DECLARE fini BOOL DEFAULT 0;

 

    -- déclaration de curseurs

    DECLARE c_mecaniciens CURSOR FOR SELECT id, prenom, nomfamille FROM mecaniciens;

 

    -- déclaration de gestionnaires

    DECLARE CONTINUE HANDLER FOR NOT FOUND SET fini=1;

    ...

 

    -- traitement

    OPEN c_mecaniciens;

 

    REPEAT

        FETCH c_mecaniciens INTO l_id, l_prenom, l_nomfamille;

        IF NOT fini THEN

            ...

            -- INSERT INTO journalerreurs(message) VALUES(CONCAT('id du mécanicien: ', l_id));

        END IF;

    UNTIL fini

    END REPEAT;

 

    CLOSE c_mecaniciens;

END$$

LOOP

MySQL

CREATE PROCEDURE traiter_mecaniciens()

BEGIN

    -- entête standard

 

    -- déclaration de variables locales

    ...

 

    DECLARE fini BOOL DEFAULT 0;

 

    -- déclaration de curseurs

    DECLARE c_mecaniciens CURSOR FOR SELECT id, prenom, nomfamille FROM mecaniciens;

 

    -- déclaration de gestionnaires

    DECLARE CONTINUE HANDLER FOR NOT FOUND SET fini=1;

    ...

 

    -- traitement

    OPEN c_mecaniciens;

 

    mecaniciens_loop: LOOP

        FETCH c_mecaniciens INTO l_id, l_prenom, l_nomfamille;

        IF fini THEN
            LEAVE mecaniciens_loop;
        END IF;

 

        ...

        -- INSERT INTO journalerreurs(message) VALUES(CONCAT('id du mécanicien: ', l_id));

 

    END LOOP mecaniciens_loop;

 

    CLOSE c_mecaniciens;

END$$

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre