写一个存储过程,功能
insert into b select * from a where trunc(a.col_date)=trunc(sysdate)-1;
用job在每天16:30调用此过程。

解决方案 »

  1.   

    定时执行制定任务的dbms_job包
    DBMS_JOB.SUBMIT(:jobno,//job号
                    'your_procedure;',//要执行的过程
                    trunc(sysdate)+1/24,//下次执行时间
                    'trunc(sysdate)+1/24+1'//每次间隔时间
                   );
    删除job:dbms_job.remove(jobno);
    修改要执行的操作:job:dbms_job.what(jobno,what);
    修改下次执行时间:dbms_job.next_date(job,next_date);
    修改间隔时间:dbms_job.interval(job,interval);
    停止job:dbms.broken(job,broken,nextdate);
    启动job:dbms_job.run(jobno);
    例子:
    VARIABLE jobno number;
    begin
          DBMS_JOB.SUBMIT(:jobno, 
                  'Procdemo;', 
                   SYSDATE, 'SYSDATE + 1/720');
             commit;
    end;
    /
      

  2.   

    To: bzszp(SongZip)    你跟我说的那种方法我也想到过了,可是我觉得这样有点浪费系统资源,因为毕竟表a中不是每天都有数据新增的,如果每天都执行一边job的话会不会有点太不智能了(呵呵,个人见解),所以我想要在表a中有新增数据的时候才在第二天的16:30分执行一个过程,如果没有新增数据,就什么事情也不做,你说我的想法可行吗?
        另外个人觉得job挺好的,就好像给数据库定了个闹钟,到时候该做什么就做什么。
        还有,我写了这个过程,你帮我看看有什么地方不妥的,谢谢,过程如下:
    create or replace procedure trans(subdate in date) is
    begin
         insert into b(id,subtime) values(b_sequence.nextval,subdate);
    end trans    这个过程只有我在执行了对表a的insert操作之后的第二天的16:30分才执行,并且这个过程的参数subdate的值是我在对表a执行insert时的系统时间,所以还请你帮我分析一下我的想法是否可行,另外还有没有什么更好的方法,谢谢了!
      

  3.   

    用job实现是比较方便的,就是定时执行你想做的任务!
      

  4.   

    你的想法应该是可以的
    也可以考虑使用触发器+jobtry:
    在触发器中用动态sql修改job的执行时间(即next_date)。
      

  5.   

    to: bzszp(SongZip)    你看可不可以这样来实现,就是在表a中数据有新增的时候就触发一个job,然后,当这个job被执行了以后,这时相当于表b中有insert操作执行,同时启动另一个触发器来把这个job给停止掉或者删除掉。当下次对表a中有insert操作时再利用触发器重新submit这个job。    不知道我写了这么多,是不是有点乱了,呵呵,如果正如我说的那样可行的话,我就想问问,关于那个动态sql在job里是不是没有什么必要呀,因为,我是想用job来执行一个存储过程,至于job中的next_date好像就是当前时间就行了吧,只要把下次执行的时间设定为第二天的16:30不就行了吗?我写了一下关于表a的触发器,你看看对不对:
    create or replace trigger into_b
    variable n number;
    before
       insert on a
    begin
       dbms_job.submit(:n,'trans(sysdate);',sysdate,'trunc(sysdate+1)+(16*60+30)/(24*60)');
    end into_b;
    我的存储过程就是在前面我写过的那个存储过程,如果要是你看我的这个触发器没有问题的话,我就有一个疑问了,就是在我发布的这个job要执行的存储过程trans的参数sysdate的值,是我执行这个触发器的时间还是执行job的时间,谢谢,写得有点多了,呵呵,不好意思,想一下子把问题弄清楚
      

  6.   

    哦,这属于一个mis的办公流程,当一个部门发出邀请时,不管有没有其他的部门接受,都直接转到邀请回收处理部门,