我试图在游标循环内调用 MySQL 中的存储过程。在循环中执行 INSERT 时,游标表现正常;但如果我尝试调用存储过程,则 continue 处理程序“设置完成 = 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;
最佳答案
我不确定,但尝试看看这段代码是否有效?
declare test_cursor cursor for
select projectid, projectdesc
from tblProjects
order by projectdesc;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
DECLARE done_holder INT;
set done = 0;
open test_cursor;
repeat
fetch trade_cursor into wprojectid, wprojectdesc;
if not done then
set done_holder = done;
insert into tblTest (a, b) values wprojectid, wprojectdesc;
call spTest(a, b, @retrn);
set done = done_holder;
end if;
until done end repeat;
close test_cursor;
关于mysql - 在游标循环内调用存储过程,而不触发继续处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10623588/