专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Oracle开发

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

发布时间:2010-05-20 14:01:29 文章来源:www.iduyao.cn 采编人员:星星草
如何让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;
/
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: