mysql中存储过程和游标调用问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql中存储过程和游标调用问题相关的知识,希望对你有一定的参考价值。

mysql中的存储过程和游标,不知道哪里错了,求帮忙!create or replace procedure proc_updateDist
begin
declare distId INT;
declare distName VARCHAR(50);
declare distY,distX VARCHAR(20);
declare rs_cursor cursor for select id,name,y,x from nets_test_district;
open rs_cursor;
cursor_loop:loop
fetch rs_cursor into distId,distName,distY,distX;
update nets_test_area set y=distY,x=distX where name=distName;
update nets_test_environment set id=(select id from nets_test_area where name=distName);
end loop cursor_loop;
close rs_cursor;
end;

参考技术A 不知道你 什么版本的 mysql

1、
我使用的 mysql, 好像没有 create or replace procedure 这样的语法。
只能 create procedure
可能是我的 mysql 版本太低了吧...

2、
MySQL 存储过程名字后面的“()”是必须的,即使没有一个参数,也需要“()”

这个不知道是不是也是我mysql 版本太低的问题。

create or replace procedure proc_updateDist

修改为
create procedure proc_updateDist ()

3、游标部分, 缺少了 DECLARE CONTINUE HANDLER
以及 判断什么时候退出循环的语句。

http://wenku.baidu.com/view/b0f2944f767f5acfa1c7cde3.html追问

distId,distName,distY,distX都有值,但是循环修改nets_test_area表中的值没有循环完,而且我发现nets_test_area和nets_test_district表中name相等的记录,这里面也查不出来,select ta.id into newId from nets_test_area ta where ta.name=distName;它认为是不相等的,为什么?

以上是关于mysql中存储过程和游标调用问题的主要内容,如果未能解决你的问题,请参考以下文章

MySql数据库的存储过程能返回游标么?

mysql存储过程 游标双重循环

MySQL存储过程和游标

Oracle数据库存储过程中输出参数为自定义游标类型时,使用call或者exec调用时,用啥来给游标赋值

mysql 存储过程,游标总是多读一行,泪奔求助

MySql存储过程的调试