当前位置: 代码迷 >> Oracle开发 >> 怎么让ORACLE每月自动更新一个表的数据
  详细解决方案

怎么让ORACLE每月自动更新一个表的数据

热度:75   发布时间:2016-04-24 08:01:48.0
如何让ORACLE每月自动更新一个表的数据?
如何让ORACLE每月自动更新一个表的数据?
现在每月手动更改的SQL语句如下:

delete from fdxs_month;
commit;
/

insert into fdxs_month (goodsid,goodsqty)
  select a.goodsid,round(sum(a.goodsqty),0) goodsqty
  from resa_sa_dtl a,resa_sa_doc b
  where a.rsaid = b.rsaid 
  and b.useday between to_date ('20100201','yyyymmdd')
  and to_date ('20100228','yyyymmdd')
  group by a.goodsid;

commit;
/

------解决方案--------------------
1 写个存储过程,用job定时执行。


另:

delete from fdxs_month;
commit;
/

改为直接truncate,降低高水位,以防表越滚越大,影响性能。

2 用物化视图,定时刷新。
------解决方案--------------------
如果每月指定几日调一次,
可以在JOB调用的存储过程中判断是否是当月指定日期
如果是则执行数据处理
如每月1日: 
if to_char(sysdate,'dd')='01' then
insert into ....
end if;
然后设置一个每天调用一次的JOB
------解决方案--------------------
JOB每月1号1点执行一次:

SQL code
begin  sys.dbms_job.submit(job => :job,                      what => '更新数据的存储过程名',                      next_date => sysdate,                      interval => 'TRUNC(LAST_DAY(SYSDATE))+1+1/24');  commit;end;/
  相关解决方案