1329无数据 - 提取,选择或处理零行

时间:2012-07-06 17:49:43

标签: mysql stored-procedures

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

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;

1 个答案:

答案 0 :(得分:0)

我认为这是一个更多的副本,除了你已经宣布了HANDLER的事实。在另一个Error 1329问题中,来自@DanJGer的this answer指出了文档中的注释:

  

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

这可能是您遇到的问题。