Der Handler, der not_found_creadit = 1
setzt , wird ausgelöst, wenn FETCH
gibt keine Zeilen zurück, aber Sie überprüfen seinen Wert vorher Ausführen von FETCH
, so dass der Hauptteil Ihrer Schleife ein zusätzliches Mal ausgeführt wird, wenn FETCH
fehlschlägt, dann wird die Schleife Schleife am Anfang der nächsten beendet Iteration.
Ordnen Sie Ihren Code neu an, um den Wert Ihrer Variablen unmittelbar nach zu überprüfen der 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;
Erwägen Sie auch, die Schreibweise Ihrer Variablen in not_found_credit
zu korrigieren