Hanteraren, som sätter not_found_creadit = 1
, aktiveras när FETCH
returnerar inga rader, men du kontrollerar dess värde före exekverar FETCH
, så huvuddelen av din loop kommer att köras en extra gång när FETCH
misslyckas, avslutas loopslingan i början av nästa iteration.
Ordna om koden för att kontrollera värdet på din variabel direkt 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;
Överväg också att korrigera stavningen av din variabel till not_found_credit