2
回答
MySQL 存储过程的一个问题.帮忙解决下
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   
本来是 判断游标如果为空的话再跳出循环.结果 在  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 
举报
襟怀磊落
发帖于6年前 2回/107阅
顶部