前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >oracle 里面定时执行任务设置

oracle 里面定时执行任务设置

作者头像
用户1220053
发布2018-02-09 11:54:26
1K0
发布2018-02-09 11:54:26
举报
文章被收录于专栏:DT乱“码”DT乱“码”
代码语言:js
复制
 DECLARE
    job_no_ NUMBER;   
 BEGIN   
    DBMS_JOB.SUBMIT(job_no_,
                    'proc_qszx_dw_sc(''040100'');',             -- 一般会将 insert into 语句写到一个存储过程insert_Prod中
            sysdate,
                    'TRUNC(sysdate)+1+2/24');     -- 2/24 每天凌晨2点
    COMMIT;
 END;

 select 
 job,last_date,last_sec,next_sec,total_time,interval,what
 from user_jobs

用法DEMO:  

代码语言:js
复制
     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:任务执行的时间间隔。

 DEMO示例:

代码语言:js
复制
declare   
                jobid     number;   
                v_sql     varchar2(2000);   
    begin   
                v_sql:='begin   
                                      if     to_char(sysdate,''HH24:MI'')=''15:30''     then   -- 15:30执行
                                            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; 

亲身实践过的demo:

代码语言:js
复制
begin
   dbms_job.what('405','day_dw_sc_for_gsdm(''040100'');');   
 --dbms_job.remove('404');   
   /* job_no_ NUMBER;   
 BEGIN   
    DBMS_JOB.SUBMIT(job_no_,
                    'proc_qszx_dw_sc(''040100'');',      -- 一般会将 insert into 语句写到一个存储过程insert_Prod中
            sysdate,
                    'TRUNC(sysdate)+1+6/24');     -- 2/24 每天凌晨2点
    COMMIT;*/
 END;
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档