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

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 ;