BEGIN
DECLARE stopIDX int DEFAULT 0;
DECLARE returnVal varchar(222) DEFAULT '' ;
DECLARE mycursor CURSOR  FOR 
SELECT line.Line_ID FROM line;-- line表有6条记录 DECLARE CONTINUE HANDLER FOR NOT found SET stopIDX = 1; OPEN mycursor;

REPEAT
FETCH mycursor INTO returnVal;
SELECT returnVal;-- 有7个结果集(第6个和第7个结果集是一样的)
UNTIL stopIDX 
END REPEAT; CLOSE mycursor;
END
描述:mysql 中有以上存储过程, 将line 表(只有6条记录) 的id 赋给游标,遍历游标,出现有7个结果集(第6个和第7个结果集是一样的),到底是哪里出错了。谢谢

解决方案 »

  1.   

    BEGIN
        DECLARE stopIDX int DEFAULT 0;
        DECLARE returnVal varchar(222) DEFAULT '' ;
        DECLARE mycursor CURSOR  FOR 
            SELECT line.Line_ID FROM line;-- line表有6条记录
     
        DECLARE CONTINUE HANDLER FOR NOT found SET stopIDX = 1;
     
        OPEN mycursor;
         
        REPEAT
        FETCH mycursor INTO returnVal;
    if stopIDX=0 then
            SELECT returnVal;-- 有7个结果集(第6个和第7个结果集是一样的);
    end if
        UNTIL stopIDX 
        END REPEAT;
     
        CLOSE mycursor;
    END
      

  2.   

    FETCH mycursor INTO returnVal;
    WHILE stopIDX=0 DO
    SELECT returnVal;-- 有7个结果集(第6个和第7个结果集是一样的)
    FETCH mycursor INTO returnVal;
    END WHILE;