DECLARE done INT DEFAULT 0; // 设置未结束标志
// ...
// 执行 sql
// ...
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; // 设置结束标志
// 先判断是否结束
IF done THEN
LEAVE data_rel;
END IF;
// 判断多一次
IF done = 0 THEN
// 插入或更新操作
INSERT INTO testjc_competition_career_data (type, one_label, one_info, one_words, two_label, two_info, two_words, three_label, three_info, three_words, member_id)
VALUES (v_sport_name, '场数', v_count_match, '你超过了', '胜率', v_win_match, '你超过了', '进球', v_count_goals, '你超过了', v_member_id);
END IF;
在写 Mysql 存储过程的时候,无意中发现了查出来的数据会多一条。与在 terminal 执行的结果条数不同。我就怀疑是循环的问题。在 Mysql 给出的模版中,是先进行“插入或更新操作”再判断是否结束的。现在改为,先判断是否结束,然后再判断是否标志是否是未结束标志。多一条判断则不会出现循环多一次的问题。