[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 給出的模版中,是先進行“插入或更新操作”再判斷是否結束的。現在改爲,先判斷是否結束,然後再判斷是否標誌是否是未結束標誌。多一條判斷則不會出現循環多一次的問題。

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