感谢您寻求帮助!
我写过这个非常简单的游标,但由于某种原因它不想工作:
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。
谢谢,克里斯
答案 0 :(得分:0)
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;