首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL存储过程循环控制

问MySQL存储过程循环控制
EN

Stack Overflow用户
提问于 2012-02-20 19:41:35
回答 1查看 599关注 0票数 0

我在游标上循环,并设置了标准的exist循环控制,但是在循环中,我还从另一个表中选择into,如果此搜索没有返回任何结果,则触发退出处理程序并终止循环。

我的问题是:如何将循环的continue处理程序附加到游标并忽略select into,或者如何解决此问题?

代码语言:javascript
复制
DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more_results=1;
.
.   
.
search_loop:WHILE (no_more_results=0) DO
.
 FETCH my_csr INTO something;
.
    SELECT thing INTO my_thing FROM `dups` where `dups`.thing = thing_id;

最后一个select触发退出条件...

谢谢,保罗

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-20 20:12:35

由于您的代码需要零行或一行,因此请使用SET语法:

代码语言:javascript
复制
SET my_thing = (SELECT thing FROM dups where dups.thing = thing_id);

如果没有行,这会将my_thing设置为null。

我还没有对此进行测试,所以如果它仍然设置处理程序,请更改为this,它总是返回一行:

代码语言:javascript
复制
SET my_thing = SELECT IFNULL((SELECT thing FROM dups where dups.thing = thing_id), null);

或者,您可以类似地转换您的语句:

代码语言:javascript
复制
SELECT IFNULL((SELECT thing FROM dups where dups.thing = thing_id), null) INTO my_thing;

我相信这些替代方案是按照可读性的顺序列出的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9360550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档