Behandleren, som sætter not_found_creadit = 1
, udløses, når FETCH
returnerer ingen rækker, men du tjekker dens værdi før udfører FETCH
, så hoveddelen af din loop vil køre en ekstra gang, når FETCH
mislykkes, så afsluttes sløjfen ved starten af næste iteration.
Omarranger din kode for at kontrollere værdien af din variabel umiddelbart efter 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;
Overvej også at rette stavningen af din variabel til not_found_credit