Le gestionnaire, qui définit not_found_creadit = 1
, est déclenché lorsque le FETCH
ne renvoie aucune ligne, mais vous vérifiez sa valeur avant exécution de FETCH
, ainsi le corps principal de votre boucle s'exécutera une fois de plus lorsque le FETCH
échoue, alors la boucle boucle se termine au début du suivant itération.
Réorganisez votre code pour vérifier la valeur de votre variable immédiatement après le FETCH
:
credit_loop : LOOP
FETCH cur_credit INTO vc_customer, dec_amount, vc_status, vc_user_type, vc_emp, vc_note;
IF not_found_creadit THEN
CLOSE cur_credit;
LEAVE credit_loop;
END IF;
SELECT vc_customer, dec_amount, vc_status, vc_user_type, vc_emp, vc_note;
......
......
END LOOP;
Pensez également à corriger l'orthographe de votre variable en not_found_credit