这个游标实在是搞不明白了
以下存储过程中使用游标 , 单独运行 那个查询语句可以查到数据,为什么运行这个存储过程就不可以了
BEGIN
#Routine body goes here...
DECLARE projectid varchar(50);
DECLARE babyid varchar(50);
DECLARE diagnose varchar(50);
DECLARE ctime date;
DECLARE lastchktime date;
DECLARE done int default true;
DECLARE mycursor CURSOR for
select t.id proid,t.babyid,t.diagnose,t.ctime, MAX(chktime) lastchktime from
(
select a.id,a.babyid,a.diagnose,a.ctime,b.ctime chktime
from highriskbabyproject a
inner join today_clinic b on a.babyid=b.babyId and
(a.closetype is null or a.closetype='') and
a.diagnose in('重度消瘦')
) t
GROUP BY t.id,t.babyid,t.diagnose,t.ctime
HAVING lastchktime < DATE_ADD(CURDATE() ,INTERVAL -7 MONTH) and ctime < DATE_ADD(CURDATE() ,INTERVAL -7 MONTH);
DECLARE continue handler for not found set done = false;
OPEN mycursor;
REPEAT
FETCH next from mycursor into projectid,babyid,diagnose,ctime,lastchktime;
SELECT projectid,diagnose,babyid,ctime,lastchktime; (运行这个存储过程,这里为什么差不到数据)
IF done THEN
UPDATE highriskbabyproject set closetype='失访', closetime= DATE_ADD(ctime,INTERVAL 7 MONTH) where id=projectid;
END IF;
UNTIL done =false
END REPEAT;
CLOSE mycursor;
END