2008-04-26

MYSQL,当游标成为一种负担

关键字: mysql 游标 cursor 光标

在写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该怎么处理的!

 

评论
发表评论

提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则

您还没有登录,请登录后发表评论

deepthink
搜索本博客
存档
最新评论