写一个存储过程
内容是按月插入过去一年的每天的数据
数据得一天一天插
问题来了
insert into table_February (ID,data_date,prp_r)
select id,to_date('20120201','yyyymmdd'),prp_r from  table_name 
;
insert into table_February (ID,data_date,prp_r)
select id,to_date('20120202','yyyymmdd'),(prp_r+1)prp_r from  table_name 
;
insert into table_February (ID,data_date,prp_r)
select id,to_date('20120203','yyyymmdd'),(prp_r+2)prp_r from  table_name 
;
......
由于每个月的天数不一样
只能根据每月的实际天数修改过程后在跑过程,十分不便。有没有其他方法写过程
比如通过某个变量来控制insert执行的次数

解决方案 »

  1.   

    先用
     ym varchar2(10);
     ym:=to_char(trunc(sysdate),'yyyy-mm');
    select to_date(ym, 'yyyy-mm') + rownum - 1
      from dual
    connect by rownum <= (last_day(to_date(ym, 'yyyy-mm')) -
               to_date(ym, 'yyyy-mm') + 1);
    算出当月的天数,然后执行你的insert方案
      

  2.   

    不用修改啊,你可以直接得到每个月的天数,然后根据这个值循环就行了。
    另外,可以一次性插入一个月的数据,没必要每天写一条。
    尝试执行下面两句sql,看懂结果就明白了select rownum from dual 
    connect by rownum <= to_number(to_char(last_day(sysdate),'DD')) insert into a
     select rownum,'201202'||lpad(rownum,2,'0') from dual 
     connect by rownum <= to_number(to_char(last_Day(to_date('20120203','yyyymmdd')),'DD'))