感谢您的帮助!
我编写了这个非常简单的游标,但是由于某种原因,它不起作用:
drop table if exists t1;
drop procedure if exists simple_loop;
create temporary table values ('chris'),('peter'),('brian'),('stewie'),('meg');
create procedure simple_loop()
begin
declare finished int default false;
declare n varchar(45);
declare c cursor for select name from t1;
declare continue handler for not found set finished = true;
open c;
c_loop: loop
fetch c into n;
--if finished then leave c_loop;
select n;
end loop;
end
如您所见,我注释掉了一行,说结果完成后离开循环。这是因为不会执行整个过程脚本。
如果该行存在,它将不会抱怨该行导致问题,而是结束:
...在'loop; end'附近使用的正确句法错误代码:1064
我不知道为什么。 MySQL文档似乎并没有太大帮助。如果我还添加行“ close c;”它也不起作用,但是指出整个结尾都是错误。
任何指针,不胜感激。
在Ubuntu上,MySQL版本为5.5。
谢谢克里斯
最佳答案
这似乎是固定的!我忘了终止if语句:
drop table if exists t1;
drop procedure if exists simple_loop;
create temporary table values ('chris'),('peter'),('brian'),('stewie'),('meg');
create procedure simple_loop()begin
declare finished int default false;
declare n varchar(45);
declare c cursor for select name from t1;
declare continue handler for not found set finished = true;
open c;
c_loop: loop
fetch c into n;
if finished then leave c_loop; end if;
select n;
end loop;
end
看一下以前注释掉的行:
if finished then leave c_loop; END IF;