Il gestore, che imposta not_found_creadit = 1
, viene attivato quando FETCH
non restituisce righe, ma ne stai verificando il valore prima eseguendo FETCH
, quindi il corpo principale del tuo ciclo verrà eseguito una volta in più quando FETCH
fallisce, quindi il ciclo del ciclo esce all'inizio del successivo iterazione.
Riorganizza il tuo codice per controllare il valore della tua variabile immediatamente dopo il 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;
Inoltre, considera di correggere l'ortografia della tua variabile in not_found_credit