写一个存储过程
内容是按月插入过去一年的每天的数据
数据得一天一天插
问题来了
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执行的次数
内容是按月插入过去一年的每天的数据
数据得一天一天插
问题来了
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执行的次数
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方案
另外,可以一次性插入一个月的数据,没必要每天写一条。
尝试执行下面两句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'))