Bonjour, j'ai une fonction stoquée que je créé qui me pause un petit probleme:

je déclare un curseur sur lequel je boucle pour un traitement mais j'obtiens toujours la même valeur: 1

cette requete:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
SELECT C.id FROM (SELECT id FROM collections ORDER BY RAND()) C LIMIT 12;
retourne(par exemple)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
134
47
57
117
174
133
175
184
121
151
179
100
ce que je recherche à avoir, jusque là pas de soucis. Maintenant dans cette fonction:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
CREATE PROCEDURE `maj_collection`(IN id INT)
BEGIN
 
    DECLARE done INT DEFAULT 0;
    DECLARE idcolls INT(10);
    DECLARE curs CURSOR FOR SELECT C.id FROM (SELECT id FROM collections ORDER BY RAND()) C LIMIT 12;
    DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
 
    DELETE FROM collectionephemere;
    OPEN curs;
    REPEAT
        FETCH curs INTO idcolls;
        IF done = 0 THEN
            SELECT idcolls;
        --    INSERT INTO collectionephemere (`collectionephemere`.`idcollection`, `collectionephemere`.`idclient`) VALUES (id,idcolls);
        END IF;
    UNTIL done
    END REPEAT;
 
    CLOSE curs;
 
END
j'ai en retour une liste de 12 "1"
du coup je comprends pas trop d'ou ça peut venir vu que ma requête est bonne (dans le curseur) et qu'il me semble bien l'utiliser dans ma procédure
je suis plus habitué à oracle mais j'ai des notions en mysql donc si vous avez des questions ou des remarques sur le code n'hésitez pas.