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:
retourne(par exemple)
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT C.id FROM (SELECT id FROM collections ORDER BY RAND()) C LIMIT 12;
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 134 47 57 117 174 133 175 184 121 151 179 100
j'ai en retour une liste de 12 "1"
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
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.
Partager