[Proc Stockée] CURSOR dynamique
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:
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