我已多次更改此存储过程,但仍然会出现相同的错误。我知道我正在返回行,因为我分别测试了光标选择。我在这个网站上已经阅读了其他类似的问题,但我似乎没有相同的解决方法。
DECLARE iDone INTEGER(10) DEFAULT 0;
DECLARE userID INTEGER(10);
DECLARE creditRemaining INTEGER(10);
DECLARE column_cur CURSOR FOR
SELECT `userID`, `creditRemaining` FROM `access`
WHERE (`dateExpire`>=now() OR `isRenewed`=1) and `descriptionShort`='Subscription';
DECLARE CONTINUE HANDLER FOR NOT FOUND SET iDone=1;
SET userID = 0;
SET creditRemaining = 0;
OPEN column_cur;
LOOP1: LOOP
FETCH column_cur INTO userID, creditRemaining;
IF iDone = 1
THEN
LEAVE LOOP1;
END IF;
-- SELECT userID, creditRemaining;
UPDATE `users` SET `saveCount`=creditRemaining, `searchCount`=6000 WHERE `ID`=userID;
END LOOP LOOP1;
CLOSE column_cur;
答案 0 :(得分:0)
我认为这是一个更多的副本,除了你已经宣布了HANDLER的事实。在另一个Error 1329
问题中,来自@DanJGer的this answer指出了文档中的注释:
在MySQL 5.6.3之前,如果生成警告或错误的语句导致调用条件处理程序,则处理程序可能无法清除诊断区域。这可能会导致未调用处理程序的外观。以下讨论演示了该问题并提供了解决方法。
这可能是您遇到的问题。