如何让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.   

    1 写个存储过程,用job定时执行。
    另:delete from fdxs_month;
    commit;
    /改为直接truncate,降低高水位,以防表越滚越大,影响性能。2 用物化视图,定时刷新。
      

  2.   

    如果每月指定几日调一次,
    可以在JOB调用的存储过程中判断是否是当月指定日期
    如果是则执行数据处理
    如每月1日: 
    if to_char(sysdate,'dd')='01' then
      insert into ....
    end if;
    然后设置一个每天调用一次的JOB
      

  3.   

    把你要执行的sql写成存储过程,每月定时执行就是
      

  4.   

    JOB每月1号1点执行一次:
    begin
      sys.dbms_job.submit(job => :job,
                          what => '更新数据的存储过程名',
                          next_date => sysdate,
                          interval => 'TRUNC(LAST_DAY(SYSDATE))+1+1/24');
      commit;
    end;
    /