DECLARE done INT DEFAULT 0;
DECLARE cur2 cursor for SELECT periodid,name,periodtype from edm_period where projectid =p_projectid ;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;
OPEN cur2;
lp1:LOOPFETCH cur2 INTO v_periodid,v_purname,v_periodtype;
IF done=1 THEN
LEAVE lp1;
END IF;
select max(periodseq) into v_maxseq from edm_form_status where projectid=p_projectid and periodid=v_periodid and formid=0;
set done=0;
end Loop lp1;
close cur2;
解决办法就是在每次循环执行结束时加上set done=0; 如上代码。
本文介绍了一个关于数据库存储过程中的游标使用问题及其解决方案。具体问题是在游标循环结束后未重置状态标记,导致循环无法正常进行。通过在每次循环结束时将状态标记重置为0解决了该问题。
1619

被折叠的 条评论
为什么被折叠?



