ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle job的用法

oracle job的用法

原创 Linux操作系统 作者:kondruz 时间:2009-03-15 17:07:24 0 删除 编辑

一个简单例子:       
    
     创建测试表   
     SQL>      create      table      a(a      date);   
    
     表已创建。   
    
     创建一个自定义过程   
     SQL>      create      or      replace      procedure      test      as   
         2        begin   
         3        insert      into      a      values(sysdate);   
         4        end;   
         5        /   
    
     过程已创建。   
    
     创建JOB   
     SQL>      variable      job1      number;   
     SQL>     
     SQL>      begin   
         2        dbms_job.submit(:job1,'test;',sysdate,'sysdate+1/1440');  --每天1440分钟,即一分钟运行test过程一次   
         3        end;   
         4        /   
    
     PL/SQL      过程已成功完成。   
    
     运行JOB   
     SQL>      begin   
         2        dbms_job.run(:job1);   
         3        end;   
         4        /   
    
     PL/SQL      过程已成功完成。   
    
     SQL>      select      to_char(a,'yyyy/mm/dd      hh24:mi:ss')   时间      from      a;   
    
     时间   
     -------------------   
     2001/01/07      23:51:21   
     2001/01/07      23:52:22   
     2001/01/07      23:53:24   
    
     删除JOB   
     SQL>      begin   
         2        dbms_job.remove(:job1);   
         3        end;   
         4        /   
    
     PL/SQL      过程已成功完成。   
    
    
     select      job,to_char(next_date,'yyyy-mm-dd      hh24:mi:ss')      from      all_jobs;   
    
    
     ----------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);   

附:调用语句和参数说明:   

dbms_job.submit( job out binary_integer,
what       in   archar2,
next_date     in   date,
interval     in   varchar2,
no_parse     in   boolean)
其中:
●job:输出变量,是此任务在任务队列中的编号;
●what:执行的任务的名称及其输入参数;
●next_date:任务执行的时间;
●interval:任务执行的时间间隔。

例题:(来源:http://topic.csdn.net/t/20060814/15/4948416.html

要建一个触发器,在每天15:30的时候把wzcs.ckjl的表里面的cksj(出库时间)字段为当天的记录插入到rjck.rkjl里面!请问如何实现?

declare   
                jobid     number;   
                v_sql     varchar2(2000);   
    begin   
                v_sql:='begin   
                                      if     to_char(sysdate,''HH24:MI'')=''15:30''     then   
                                            insert     into     rjck.rkjl(cksj)     select     cksj     from     wzcs.ckjl;   
                                            dbms_output.put_line(''inserted     success'');   
                                      end     if;   
                                      commit;   
                                exception   
                                      when     others     then   
                                      rollback;   
                                      dbms_output.put_line(SQLERRM);   
                                end;   
                              ';   
                dbms_job.submit(jobid,v_sql,sysdate,'sysdate+1/1440');   
                dbms_job.run(jobid);   
                dbms_output.put_line('job     '||to_char(jobid)||'     is     running');   
    end;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17065702/viewspace-567392/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 关于Exadata
请登录后发表评论 登录
全部评论

注册时间:2009-03-14

  • 博文量
    23
  • 访问量
    60349