j'ai cette procédure stockée :
quand je remplace le dernier select par : select listeId;
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
23
24
25
26
27
28 delimiter | CREATE PROCEDURE proc_calcul(IN rId TEXT, IN debut DATETIME, IN fin DATETIME) BEGIN DECLARE finished INTEGER DEFAULT 0; DECLARE listeId TEXT DEFAULT ""; DECLARE bid INT; DECLARE cursor1 CURSOR FOR select b.ID from b inner join t on b.T_ID = t.ID and b.R_ID in (rId) and t.DATE between debut and fin; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET finished = 1; OPEN cursor1; REPEAT FETCH cursor1 INTO bid; IF NOT finished THEN SET listeId = CONCAT(listeId, ",", bid); END IF; UNTIL finished END REPEAT; CLOSE cursor1; SET listeId = SUBSTR(listeId, 2); select count(distinct p.ID) as c from p where p.B_ID in (listeId); END | delimiter ;
j'obtiens 15 id sur un : call proc_statistiqueVente(10, '2007-12-21 00:00:00', '2007-12-21 23:59:59');
sachant qu'a ces 15 id sont vérifiés et valide, et que dans la table p, il y a au moins une ligne (voir plus) pour chaque correspondance.
j'attend un resultat de 29, or j'obtiens 1, comme si la requere ne prenait pas listeId, mais juste le premier id de cette liste (sous forme texte).
Qu'en pensez vous ?
Partager