我在游标上循环,并设置了标准的exist循环控制,但是在循环中,我还从另一个表中选择into,如果此搜索没有返回任何结果,则触发退出处理程序并终止循环。
我的问题是:如何将循环的continue处理程序附加到游标并忽略select into,或者如何解决此问题?
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触发退出条件...
谢谢,保罗
发布于 2012-02-20 20:12:35
由于您的代码需要零行或一行,因此请使用SET语法:
SET my_thing = (SELECT thing FROM dups where dups.thing = thing_id);如果没有行,这会将my_thing设置为null。
我还没有对此进行测试,所以如果它仍然设置处理程序,请更改为this,它总是返回一行:
SET my_thing = SELECT IFNULL((SELECT thing FROM dups where dups.thing = thing_id), null);或者,您可以类似地转换您的语句:
SELECT IFNULL((SELECT thing FROM dups where dups.thing = thing_id), null) INTO my_thing;我相信这些替代方案是按照可读性的顺序列出的。
https://stackoverflow.com/questions/9360550
复制相似问题