oracle job的用法

来源:互联网 发布:什么java视频教程好 编辑:程序博客网 时间:2024/06/06 04:43

一个简单例子:      
   
     创建测试表  
     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;

原创粉丝点击