我正試圖在光標的循環內調用MySQL中的存儲過程。在循環中執行INSERT時,遊標的行爲正確;但如果我嘗試調用存儲過程,則繼續處理程序'設置完成= 1',並且將在處理第一條記錄後過早退出循環。有關如何解決此問題的任何想法?謝謝。在光標循環中調用存儲過程,不跳閘繼續處理程序
declare test_cursor cursor for
select projectid, projectdesc
from tblProjects
order by projectdesc;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
set done = 0;
open test_cursor;
repeat
fetch test_cursor into wprojectid, wprojectdesc;
if not done then
insert into tblTest (a, b) values (wprojectid, wprojectdesc); <--this would work
call spTest(wprojectid, wprojectdesc, @retrn); <--this trips the Handler after first loop
end if;
until done end repeat;
close test_cursor;
這很接近,這種方法是類似的,但比我的「設置完成= 0」後更優雅的力量調用sp後。仍然在這裏結束。謝謝。 – user1399233
是的,這是正確的解決方案 - 問題是,當「調用spTest ...」函數運行時,它有時會跳出「完成」標誌。我有時通過調用函數來設置變量值。因此,在調用函數之前,將「完成」的值存儲到臨時持有者中,並在調用糾正問題後立即將該值加載回「完成」。謝謝Ehsan。 – user1399233
謝謝@ user1399233!我無法理解爲什麼它在第一次循環後跳閘。 +1。 – Kit