Trình xử lý, đặt not_found_creadit = 1
, được kích hoạt khi FETCH
không trả về hàng nào, nhưng bạn đang kiểm tra giá trị của nó trước thực thi FETCH
, vì vậy phần thân chính của vòng lặp của bạn sẽ thực thi thêm một lần nữa khi FETCH
không thành công, sau đó vòng lặp thoát ra khi bắt đầu tiếp theo sự lặp lại.
Sắp xếp lại mã của bạn để kiểm tra giá trị của biến ngay lập tức sau 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;
Ngoài ra, hãy xem xét sửa lỗi chính tả biến của bạn thành not_found_credit