probleme de boucle while dans une procedure stockée
Bonjour,
J'ai un probleme dans une procedure stockée qui contient une boucle while, cette derniere ne s'exute qu'une fois or le test est fait sur une variable decrementée de 4 vers 0. Je ne trouve pas l'erreur. Mercide m'aider je ne trouve rien sur le web ni sur les forums...SOS :cry:
voici mon source :
delimiter //
CREATE PROCEDURE front_back.curetape3()
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE nbLigne INT;
DECLARE a CHAR(100);
DECLARE b char(100);
DECLARE c CHAR(100);
DECLARE d CHAR(100);
DECLARE e CHAR(100);
DECLARE f CHAR(100);
DECLARE g CHAR(100);
DECLARE h CHAR(100);
DECLARE i CHAR(100);
DECLARE j CHAR(100);
DECLARE a1 CHAR(100);
DECLARE b1 char(100);
DECLARE c1 CHAR(100);
DECLARE d1 CHAR(100);
DECLARE e1 CHAR(100);
DECLARE f1 CHAR(100);
DECLARE g1 CHAR(100);
DECLARE h1 CHAR(100);
DECLARE i1 CHAR(100);
DECLARE j1 CHAR(100);
DECLARE cur1 CURSOR FOR SELECT num_operation,poste,nominal_1,nominal_2,valeur_taux_1,valeur_taux_2,base_1,base_2,periodicite_1, periodicite_2 FROM front_back.signessktp;
DECLARE cur2 CURSOR FOR SELECT num_operation ,poste,nominal_1,nominal_2,valeur_taux_1,valeur_taux_2,base_1, base_2 ,periodicite_1,periodicite_2 FROM front_back.signatures_essentielles;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
set nbLigne = 5;
while nbLigne > 0 do
select nbLigne;
set nbLigne = nbLigne - 1;
FETCH cur2 INTO a1,b1,c1,d1,e1,f1,g1,h1,i1,j1;
REPEAT
FETCH cur1 INTO a,b,c,d,e,f,g,h,i,j;
if not done then
IF trim(b)=trim(b1) THEN
insert into table_stockage(ERREUR_CONSTATEE, NUM_DOSSIER_BRICE,NUM_DOSSIER_KTP, CODE_RETOUR_1) select '01', a1,a,concat(b,"=",b1) ;
insert into etapes(etape_3) value(0);
end if;
IF trim(c)=trim(c1) THEN
insert into table_stockage(ERREUR_CONSTATEE, NUM_DOSSIER_BRICE,NUM_DOSSIER_KTP, CODE_RETOUR_1) select '02' , a1,a,concat(c,"=",c1);
insert into etapes(etape_3) select NUM_OPERATION from brice_operation;
end if;
IF trim(d)=trim(d1) THEN
insert into table_stockage(ERREUR_CONSTATEE, NUM_DOSSIER_BRICE,NUM_DOSSIER_KTP, CODE_RETOUR_1) select '03', a1,a,concat(d,"=",d1);
insert into etapes(etape_3) value(0);
end if;
IF trim(e)=trim(e1) THEN
insert into table_stockage(ERREUR_CONSTATEE, NUM_DOSSIER_BRICE,NUM_DOSSIER_KTP, CODE_RETOUR_1) select '04', a1,a,concat(e,"=",e1);
insert into etapes(etape_3) value(0);
end if;
IF trim(f)=trim(f1) THEN
insert into table_stockage(ERREUR_CONSTATEE, NUM_DOSSIER_BRICE,NUM_DOSSIER_KTP, CODE_RETOUR_1) select '05', a1, a, concat(f,"=",f1);
insert into etapes(etape_3) value(0);
end if;
IF trim(g)=trim(g1) THEN
insert into table_stockage(ERREUR_CONSTATEE, NUM_DOSSIER_BRICE,NUM_DOSSIER_KTP, CODE_RETOUR_1) select '06', a1, a,concat(g,"=",g1);
insert into etapes(etape_3) value(0);
end if;
IF trim(h)=trim(h1) THEN
insert into table_stockage(ERREUR_CONSTATEE, NUM_DOSSIER_BRICE,NUM_DOSSIER_KTP, CODE_RETOUR_1) select '07', a1,a,concat(h,"=",h1);
insert into etapes(etape_3) value(0);
end if;
IF trim(i)=trim(i1) THEN
insert into table_stockage(ERREUR_CONSTATEE, NUM_DOSSIER_BRICE,NUM_DOSSIER_KTP, CODE_RETOUR_1) select '08', a1,a,concat(i,"=",i1);
insert into etapes(etape_3) value(0);
end if;
IF trim(j)=trim(j1) THEN
insert into table_stockage(ERREUR_CONSTATEE, NUM_DOSSIER_BRICE,NUM_DOSSIER_KTP, CODE_RETOUR_1) select '09', a1,a,concat(j,"=",j1);
insert into etapes(etape_3) value(0);
END IF;
if not b=b1 and c=c1 and d=d1 and e=e1 and f=f1 and g=g1 and h=h1 and i=i1 and j=j1 then
insert into table_stockage(ERREUR_CONSTATEE, NUM_DOSSIER_BRICE,NUM_DOSSIER_KTP) select '99', a1,a;
insert into etapes(etape_3) value(88);
end if;
end if;
UNTIL done END REPEAT;
end while;
CLOSE cur1;
CLOSE cur2;
END
//
delimiter ;