在写MYSQL 存储过程当中遇到了一个问题:当条件1(cur1中存在一个cur2)和条件2(使用了DECLARE CONTINUE HANDLER FOR NOT FOUND )同时具备,内部循环cur2会造成cur2不能循环FETCH
比如下面代码:
declare cur1 cursor for .....;
declare cur2 cursor for .....;
declare continue handler for not found set stop = true;
open cur1
loop
#(2)
open cur2
do something...
......
问题处在内部的cur2循环,当cur1第一次循环结束后cur2已经到达了结尾,那么cur1的第二次循环就不能够再次遍历cur2了
本来一个合理的解决方法是 把cur2的定义放到#(2)处(网上有人写过这样的代码,把cur2作为一个局部的cursor 处理)这样就能够保证cur2打开的时候为止始终都是在开始位置,但是我也这样写了,出现了语法错误;而且另外一个问题是,当把cur2作为局部cursor处理,上面定义的...handler for not found ....是否会把cur2纳入处理范围,这个是不确定的
对于这种问题,不知道MYSQL该怎么处理的!