OPEN CUR_DAY FOR DAY_SQL;       LOOP         EXIT WHEN CUR_DAY%NOTFOUND;         FETCH CUR_DAY           INTO i_pnt_name, i_pnt_desc, i_histime, i_value;                insert into REPORT_DAY_DATA           (pnt_name, pnt_desc, histime, value)         values           (i_pnt_name, i_pnt_desc, i_histime, i_value);       END LOOP;       COMMIT;       CLOSE CUR_DAY;
这个存储过程 为什么我查出来的是7条数据。插入的时候最后一行多插入了一编。就是8条。我哪里写错了

解决方案 »

  1.   

    exit when这句应该在fetch的后面。不然会多一条出来
      

  2.   

    因为fetch没成功的时候你后面还是执行了insert into 
    应该把insert 放到前面
    OPEN CUR_DAY FOR DAY_SQL;       FETCH CUR_DAY           INTO i_pnt_name, i_pnt_desc, i_histime, i_value;   LOOP         EXIT WHEN CUR_DAY%NOTFOUND;        insert into REPORT_DAY_DATA           (pnt_name, pnt_desc, histime, value)  values           (i_pnt_name, i_pnt_desc, i_histime, i_value); FETCH CUR_DAY           INTO i_pnt_name, i_pnt_desc, i_histime, i_value;                             END LOOP;       COMMIT;       CLOSE CUR_DAY; 
      

  3.   

    OPEN CUR_DAY FOR DAY_SQL;
    FETCH CUR_DAY  INTO i_pnt_name, i_pnt_desc, i_histime, i_value;
      LOOP  EXIT WHEN CUR_DAY%NOTFOUND;
      insert into REPORT_DAY_DATA  (pnt_name, pnt_desc, histime, value)  values          (i_pnt_name, i_pnt_desc, i_histime, i_value); 
      FETCH CUR_DAY INTO i_pnt_name,i_pnt_desc,i_histime,i_value;
      END LOOP;
      COMMIT;
     CLOSE CUR_DAY;