[MySQL] 关于 MySql 存储过程写游标过程判断开始及结束的正确方法

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 给出的模版中,是先进行“插入或更新操作”再判断是否结束的。现在改为,先判断是否结束,然后再判断是否标志是否是未结束标志。多一条判断则不会出现循环多一次的问题。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章