Манипулаторът, който задава not_found_creadit = 1
, се задейства, когато FETCH
не връща редове, но вие проверявате стойността му преди изпълнение на FETCH
, така че основното тяло на вашия цикъл ще се изпълни още един път, когато FETCH
не успее, тогава цикълът излиза в началото на следващия повторение.
Пренаредете кода си, за да проверите стойността на вашата променлива веднага след 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;
Също така помислете за коригиране на правописа на вашата променлива на not_found_credit