1

我已经多次更改此存储过程,但仍然收到相同的错误。我知道我正在取回行,因为我单独测试了游标选择。我在这个网站上阅读了其他类似的问题,但我似乎没有相同的解决方法。

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;
4

1 回答 1

0

我认为这是更多的重复,除了你已经声明了一个 HANDLER 的事实。在另一个Error 1329问题中, @DanJGer 的这个回答指出了文档中的一条注释:

在 MySQL 5.6.3 之前,如果生成警告或错误的语句导致调用条件处理程序,则处理程序可能不会清除诊断区域。这可能会导致处理程序没有被调用。以下讨论演示了该问题并提供了解决方法。

这很可能是您遇到的问题。

于 2017-09-08T13:25:29.073 回答