El controlador, que establece not_found_creadit = 1
, se activa cuando FETCH
no devuelve filas, pero está comprobando su valor antes ejecutando FETCH
, por lo que el cuerpo principal de su ciclo se ejecutará una vez más cuando FETCH
falla, entonces el bucle sale al comienzo del siguiente iteración.
Reorganice su código para verificar el valor de su variable inmediatamente después el 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;
Además, considere corregir la ortografía de su variable a not_found_credit