Bonjour,

J'ai une procédue stockée P_PRINCIPALE. Dans cette procédure, j'ai créé un curseur récupérant le résultat d'un select. Mes conditions de ce select sont des variables. Je boucle sur ces variables avec un WHILE. Voici l'algo de la procédure stockée pour mieux comprendre :

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
29
30
31
32
33
34
35
 
CREATE PROCEDURE P_PRINCIPALE ()
BEGIN
 
	DECLARE done INT DEFAULT 0; #pour le parcours du curseur
	DECLARE tlogin CHAR(200); #pour stocker la première valeur du curseur
	DECLARE tcount INT(20); #pour stocker la deuxième valeur du curseur
        DECLARE stop TINYINT(1) DEFAULT 0; #pour la condition du WHILE
        DECLARE date_debut VARCHAR(50) default "%2008-02-09%"; #Initialisation des variables pour la requête
        DECLARE date_fin VARCHAR(50) default "%2008-02-10%";	
 
        WHILE (stop=0) DO
 
	DECLARE CursBase CURSOR FOR SELECT login, count(sessionId) AS nb_transactions
        FROM `transactions`
        WHERE `debutTransac` LIKE date_debut
        AND `finTransac` LIKE date_fin
        GROUP BY login;
 
	DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
 
	OPEN CursBase;
	REPEAT
        FETCH CursBase INTO tlogin,tcount;
	    #Utilisation des variables tlogin et tcount, MAJ de table, ect ect ...
            #Condition pour passer stop à 1, ect ect ...
	UNTIL done END REPEAT;
	CLOSE CursBase;
 
        # On incrémente les date debut et fin (je n'ai pas mis le code entier)
        SET date_debut = date_debut+ "1 jour";
        SET date_fin = date_fin+ "1 jour";
 
	END WHILE;
END;
Donc on ne peut pas faire de DECLARE dans une boucle WHILE. Dans ce cas comment faire pour alimenter dynamiquement les conditions de ma requête récupérée par le curseur ?

Merci d'avance.

PS : J'allais oublier, version mysql 5.0 et pas de possibilité d'upgrader