急,请教Mysql存储过程退出循环的问题
编写一个MySQL的存储过程:循环入库单并逐条取出货品ID,根据货品ID分别去查询对应的出库和报账情况。算法如下:
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
declare 入库单货品游标;
open 游标;
fetch 一条货品ID
①根据货品ID,获取对应的出库记录;(select into 临时变量)
②根据货品ID,获取对应的报账记录;
close 游标;
存在一个问题:如果其中某个货品ID没有对应的出库记录或报账记录,就会触发not found,并退出游标。但实际是,即便该货品ID没有对应的记录,希望还是继续遍历全部的货品。
如何解决当语句①②为空时,不触发done=1并退出游标这个问题?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
使用MySQL真是崩溃啊,莫名其妙地退出循环,又没有调试工具 - -#
现在为了解决语句①②不抛出not found异常,改成这样:
感觉这样写,很多代码都是重复累赘,能否有其他方法解决?
有没有可以调试存储过程的MySQL工具?
如果查询的结果是数值的话可以用例如下面的语句:
SELECT COALESCE(SUM(view_count),0) INTO @RVS FROM xxxx WHERE .....
我发现如果查询结果为空,而仍然使用select into语句,则会触发not found。莫非我每次都要使用select count(*)来判断记录是否为空,再使用select into赋值?能否有更优雅的解决方法?
伪码:
十分紧急,今天要解决掉,恳请帮忙!