De handler, die not_found_creadit = 1
. instelt , wordt geactiveerd wanneer de FETCH
geeft geen rijen terug, maar u controleert de waarde voordat uitvoeren van FETCH
, dus de hoofdtekst van je lus wordt een extra keer uitgevoerd wanneer de FETCH
mislukt, dan eindigt de luslus aan het begin van de volgende iteratie.
Herschik uw code om de waarde van uw variabele direct na . te controleren de 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;
Overweeg ook om de spelling van uw variabele te corrigeren naar not_found_credit