declare 
starttime date;
endtime date;
askstatus int;
begin
starttime:=to_date('2005-3-1','yyyy-mm-dd');
endtime:=to_date('2005-3-2','yyyy-mm-dd');
while starttime<to_date('2005-7-5','yyyy-mm-dd') loop
select count(*) into askstatus from taskquestion 
                where starttime>starttime and starttime<endtime;
insert into askstatus(chattime,askstatus)values(starttime,askstatus);
starttime:=starttime+1;
endtime:=endtime+1;
end loop;
end;
/

解决方案 »

  1.   

    declare 
      v_starttime date;
      v_endtime date;
      v_askstatus int;
    begin
      v_starttime:=to_date('2005-3-1','yyyy-mm-dd');
      v_endtime:=to_date('2005-3-2','yyyy-mm-dd');
      while v_starttime<to_date('2005-7-5','yyyy-mm-dd') loop
        select count(*) into v_askstatus from taskquestion 
                    where starttime>v_starttime and starttime<v_endtime;
        insert into askstatus(chattime,askstatus)values(v_starttime,v_askstatus);
        v_starttime:=v_starttime+1;
        v_endtime:=v_endtime+1;
      end loop;
    end;
    /
      

  2.   

    create or replace procedure p1(
    start_time    in   date
    )
    is
    s_time      date      default   trunc(start_time);
    thisdate    date      default   sysdate;
    begin
    while s_time<thisdate loop
        insert into askstatus(chattime,askstatus) 
        value select s_time,count(*) from tastquestion where trunc(starttime)=s_time;
      
        s_time:=stime+1;
    end loop;
    commit;
    end ;
      

  3.   

    需要在最后一个END前加一句commit;