O manipulador, que define
not_found_creadit = 1
, é acionado quando o FETCH
não retorna nenhuma linha, mas você está verificando seu valor antes executando FETCH
, então o corpo principal do seu loop será executado mais uma vez quando o FETCH
falha, então o loop de loop sai no início do próximo iteração. Reorganize seu código para verificar o valor de sua variável imediatamente depois o
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;
Além disso, considere corrigir a ortografia de sua variável para
not_found_credit