DECLARE DONE3 INT DEFAULT 0;
DECLARE CUR_PZMX_DATA CURSOR FOR SELECT colm2 FROM tab_2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET DONE3 = 1;
OPEN CUR_PZMX_DATA;
REPEAT
FETCH  CUR_PZMX_DATA INTO AS_STR1;
......
UNTIL DONE3 END REPEAT;
CLOSE CUR_PZMX_DATA;
光标语句如上,SELECT colm2 FROM tab_2 查询得到6条记录
理论上应该循环6次退出,但是我测试中最后一条记录循环了两次在退出,循环了7次请教原因及解决方法

解决方案 »

  1.   

    我是用这样的处理来避免这个问题:   DECLARE done1 INT DEFAULT 0;
       DECLARE CONTINUE HANDLER FOR NOT FOUND SET done1 = 1;   OPEN c1;
       lable_c1:
       LOOP
          SET done1 = 0;
          FETCH c1 INTO v_productid, v_code;
          IF done1 = 1 THEN
             LEAVE lable_c1;
          END IF;
          ......   END LOOP lable_c1;
       CLOSE c1;