您好,欢迎访问一九零五行业门户网

MySQL存储过程错误No data_MySQL

刚好一个案例需要在写存储过程,但是总是报错no data - zero rows fetched, selected, or processed
存错过程代码如下
delimiter $$
drop procedure if exists `jbpm`.`refreshroster` $$
create definer=`root`@`%` procedure `refreshroster`(in hostname varchar(30))
begin
  declare uname varchar(30);
  declare cur1 cursor for select username from ofuser;
delete from ofroster;
  open cur1;
  read_loop: loop
      fetch cur1 into uname;
    update temp set text_='1';
    ......
  end loop;
  close cur1;
end $$
delimiter ;
修改后
delimiter $$
drop procedure if exists `jbpm`.`refreshroster` $$
create definer=`root`@`%` procedure `refreshroster`(in hostname varchar(30))
begin
  declare i int;
  declare tc int;
  declare flag int;
  declare uname varchar(30);
  declare cur1 cursor for select username from ofuser;
  declare continue handler for sqlstate '02000' set flag = 3;
  select count(*) into tc from ofuser;
  delete from ofroster;
  set i=0;
  open cur1;
  read_loop: loop
      fetch cur1 into uname;
    update temp set text_='1';
    if i > tc then
      leave read_loop;
    else
      .......
    end if;
    set i=i+1;
  end loop;
  close cur1;
end $$
delimiter ;
增加了红色语句部分,我创建一个表temp,仅一个字段,然后每次循环时更新一下,这样就不会报错。其中使用了i和tc,因为我发现单纯使用fetch,并不会退出循环,可能是死循环。
其它类似信息

推荐信息