zoukankan      html  css  js  c++  java
  • MySQL存储过程错误No data zero rows fetched, selected, or processed

    刚好一个案例需要在写存储过程,但是总是报错
    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,并不会退出循环,可能是死循环。

  • 相关阅读:
    yum安装LAMP
    CentOS7添加永久静态路由
    批量解压缩,显示进度条(2)
    Django静态文件配置
    大家同乐一下,搞了三天的字符串与STL!终于搞好了。。
    C++动态分配空间
    UNICODE问题
    VC编码规范 (转)
    vs2008中添加splash screen[分享]
    E
  • 原文地址:https://www.cnblogs.com/liuzhengdao/p/1987201.html
Copyright © 2011-2022 走看看