DAY DATE;
MON:=TO_DATE('2010-10-10','YYYY-MM-DD');
I NUMBER;BEGAIN
I:=0;LOOPINSERT INTO TB1 SELECT DAY,TIME FROM DB2 WHERE TIME>DAY AND TIME<DAY+30;DAY:=DAY+1;
I:=I+1
EXIT WHEN I>30;END LOOPEND问题:我本意是按月统计后插入数据到另外一张表。我不加MON:=MON+1 查询出来有数据,加了就没有,和事实数据不符合,大家看看这样写是不是有问题?
希望有人能拿到我的100分,还从没在这里解决过问题。

解决方案 »

  1.   

    没看懂楼主的需求哦 
    你的能出数据god
    好多问题 
    1  mon没有定义
    2  是begin 不是 BEGAIN
    declare
      DAYs DATE;
      MON  date := TO_DATE('2010-10-10', 'YYYY-MM-DD');
      I    NUMBER := 0;
    BEgin  for i in 1 .. 30 LOOP
        select sysdate - I into days from dual;
        dbms_output.put_line(days);
      END LOOP;END;
      

  2.   

    DECLARE
      DAYS DATE;
      MON  DATE := TO_DATE('2010-10-10', 'YYYY-MM-DD');
      I    NUMBER;
    BEGIN
      I := 0;
      LOOP
        INSERT INTO TB1
          SELECT DAY, TIME
            FROM DB2
           WHERE TIME > DAYS
             AND TIME < DAYS + 30;
        DAY := DAY + 1;
        I   := I + 1;
        EXIT WHEN I > 30;
      END LOOP;
    END;不要用day啊 这种关键字去做字段名
      

  3.   

    DECLARE
      DAYS DATE;
      MON  DATE := TO_DATE('2010-10-10', 'YYYY-MM-DD');
      I    NUMBER;
    BEGIN
      I := 0;
      LOOP
        INSERT INTO TB1
          SELECT DAY, TIME
            FROM DB2
           WHERE TIME > DAYS
             AND TIME < DAYS + 30;
        DAYS := DAYS + 1;
        I    := I + 1;
        EXIT WHEN I > 30;
      END LOOP;
    END;
      

  4.   

    不是很明白楼主的意思……
    注意下:
    MON:=TO_DATE('2010-10-10','YYYY-MM-DD');
    MON:=MON+1; --MON 的值2010-10-11
    -----------------------------------------
    MON:=TO_DATE('2010-10-10','YYYY-MM-DD');
    add_months(MON,1)--2010-11-10