mysql存储过程中调用存储过程的一个问题

lala5201 2012-09-15 11:31:36
以下是我的代码,编译会出错。如果把call splitString(strIds,",");放在游标声明后面,就可以编译通过。不知道为什么

CREATE DEFINER=`root`@`%` PROCEDURE `InitUserMail`(strIds varchar(500))
BEGIN
declare uid int;
declare done int;

call splitString(strIds,",");
DECLARE rs_cursor CURSOR FOR select status from tmp_split;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;
set done = 0;
open rs_cursor;
cursor_loop:loop
FETCH rs_cursor into uid;
if done=1 then
leave cursor_loop;
end if;
if uid then
call CreateUserMailOption(uid);
call CreateUserMailBox(uid);
end if;
end loop cursor_loop;
close rs_cursor;
END
...全文
122 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Rotel-刘志东 2012-10-10
  • 打赏
  • 举报
回复
declare必须放在其他的语句前面,这是mysql语法决定的。
展S开K双Y翼 2012-10-10
  • 打赏
  • 举报
回复
楼上正解!declare必须在最前面。
lala5201 2012-09-15
  • 打赏
  • 举报
回复
另外tmp_split是在splitString中生成的临时表
ACMAIN_CHM 2012-09-15
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
以下是我的代码,编译会出错。如果把call splitString(strIds,",");放在游标声明后面,就可以编译通过。不知道为什么
...
[/Quote]

这个是MYSQL的语法规定,DECLARE必须在其它所有语句之前。
child_1986 2012-09-15
  • 打赏
  • 举报
回复
mysql 存储过程中 declare声明的操作都要放在最前面

56,675

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧