请问我写的这个mysql的存储过程为什么报no data错误?

createproceduretransferAbsolutePath()begindeclareinfoidvarchar(100);declarelinkvarcha... create procedure transferAbsolutePath()
begin
declare infoid varchar(100);
declare link varchar(500);
declare cur_1 CURSOR for select id,file_preview_url from information;
open cur_1;
loop
fetch cur_1 into infoid,link;
if link not like '/%' then
update information set file_preview_url=CONCAT("/",link) where id=infoid;
end if;
end loop;
close cur_1;
end

这是存储过程
需求是这样的 有一个表information表 该表有一个字段file_preview_url
要实现的是 如果link字段的值不是以"/"开头 则给这个字段的值之前加上/
比如
file_preview_url
555
/123
/345

执行完存储过程后
555就变成/555
而剩下那俩不变

我写的那个存储过程可以保存 但运行时报错no data - zero rows fetched,selected,or processed
这是怎么回事?
不要用select查询敷衍了事 要把表中的物理记录都修改了
展开
 我来答
liangzain79
2015-03-13 · TA获得超过1234个赞
知道小有建树答主
回答量:866
采纳率:82%
帮助的人:253万
展开全部
报这个错是因为游标没有查询到数据,所以循环遍历时,就会报No data错误。可以在遍历时,判断不为空。
追问
如何判断不为空啊
追答
如下伪代码:

OPEN cur1;
FETCH cur1 INTO a;
if notfound = 1 then
select 'no result';
#写业务逻辑
ELSE
#写业务逻辑
end if;
CLOSE cur1;
百度网友dfd48f7
2015-03-13 · TA获得超过465个赞
知道小有建树答主
回答量:325
采纳率:50%
帮助的人:155万
展开全部
使用FOUND_ROWS()方法得到select语句查询出来的数据.如果FOUND_ROWS()得到的值为0,就进入异常处理逻辑.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式