MySQL 存储过程的一个问题.帮忙解决下

襟怀磊落 发布于 2012/04/28 13:27
阅读 116
收藏 0
本来是 判断游标如果为空的话再跳出循环.结果 在  backupScrore is NOT NULL  那里就跳出来了.就把done设为1了,为啥?

 BEGIN
DECLARE done INT DEFAULT 0;
DECLARE scoreNumber INT DEFAULT 0;
DECLARE DefstudentId INT DEFAULT 0;
DECLARE backupScrore double DEFAULT 0;

DECLARE cur1 CURSOR FOR  select sum(scoreNum) as sumNum,passivityId as studentId from Score

 group by passivityId ; /**游标**/

DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

UPDATE student d set d.badge = null;

OPEN cur1;

REPEAT
FETCH cur1 into scoreNumber,DefstudentId;
IF done = 0 THEN

SELECT  score INTO backupScrore from `backup`  WHERE studentId = DefstudentId 
ORDER BY backupdate desc ,backupId DESC LIMIT 1;  

IF  backupScrore is NOT NULL THEN
UPDATE student d set d.growScore= scoreNumber- backupScrore 
where  d.studentId= DefstudentId;  
END IF;
 
END IF;
UNTIL done = 1 
END REPEAT;

CLOSE cur1;
END 
加载中
0
强强小狮子
强强小狮子
SELECT score INTO backupScrore from `backup` WHERE studentId = DefstudentId
ORDER BY backupdate desc ,backupId DESC LIMIT 1这条查询语句是不是没有查到结果,如果没有查询结果的话会抛错,直接跳出循环了
返回顶部
顶部