mysql存储过程报错_MySQL存储过程错误No data - zero rows fetched, selected, or processed

本文介绍了如何解决MySQL存储过程中遇到的'No data - zero rows fetched, selected, or processed'错误。通过添加一个临时变量和计数器,以及设置CONTINUE HANDLER来避免死循环,从而修复了问题。" 111348720,10293112,人脸识别技术详解:从传统方法到深度学习,"['深度学习', '人脸识别', '特征提取', '图像处理', '数据增强']
摘要由CSDN通过智能技术生成

刚好一个案例需要在写存储过程,但是总是报错

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,并不会退出循环,可能是死循环。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值