我正在学习mysql游标。
以下是一个 mysql 程序,我实际上想遍历表 A 中的所有行,并为每个 A 的行在表 B 中“选择”相关的内容。
现在的问题是,当内部“选择”返回一个空集时,这个 while 循环会中断,这显然不是我所期望的行为。(我希望它遍历 A 的所有行!当当前行在 B 中没有任何相关时,然后转到下一个!)
我了解到光标的停止标准应该是这样DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET stop=1;
的,我也知道这是问题的原因。
但是对于这种情况,传统的解决方法是什么?
create procedure SOME_PROC ()
BEGIN
DECLARE temp_id int;
DECLARE cursor_id CURSOR FOR select id from A;
DECLARE stop int default 0;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET stop=1;
OPEN cursor_id;
FETCH cursor_id INTO temp_id;
while stop <> 1 do
select B.x from B where B.id = cursor_id;
FETCH cursor_id INTO temp_id;
end while;
CLOSE cursor_id;
END