*DELIMITER //
create procedure test(OUT l_out INT)
begin
DECLARE done INT DEFAULT FALSE;
declare l_sno INT default 0;
declare a INT default 0;
declare b INT default 0;
declare cur_1 cursor for select sno,interest from temp t where x_coord between 55 and 60 for update of interest;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
open cur_1;
read_loop: LOOP
fetch cur_1 into a,b;
if done then
Leave read_loop;
end if;
set l_sno=l_sno+1;
update temp set interest =1 where CURRENT OF cur_1;
END LOOP;
close cur_1;
set l_out=l_sno;
end //
;*
错误:
1064 - 您的SQL语法出错;检查与您的MySQL服务器版本相对应的手册,以便在感兴趣的地方附近使用正确的语法; DECLARE CONTINUE HANDLER for NOT FOUND SET done = TRUE;打开cur_1;'在第7行
1064 - 您的SQL语法出错;检查与您的MySQL服务器版本对应的手册,以便在'OF cur_1附近使用正确的语法;结束循环;关闭cur_1; set l_out = l_sno;在第16行结束
答案 0 :(得分:3)
在我看来,就像你来自不同类型的SQL,比如DB2 - 那些工作。
来自http://dev.mysql.com/doc/refman/5.0/en/cursor-restrictions.html
游标是只读的;你不能使用游标来更新行。
UPDATE WHORE CURRENT OF和DELETE WHERE CURRENT OF未实现,因为不支持可更新游标。
所以我猜你不能这样做,你必须指定一个类似mysql的where子句。