Oralce 定时任务 调用存储过程

  1. 查询:  
  2. select job,broken,what,interval,t.* from user_jobs t;   
  3. job job的唯一标识,自动生成的     
  4. broken 是否处于运行状态,N;运行;Y:停止     
  5. what 存储过程名称  
  6. next_date 初次执行时间      
  7. interval 执行周期
一.复杂点的:
1.创建 定时任务
Declare 
job number;
begin
  sys.dbms_job.submit(job => job,
                      what => 'declare s1 varchar2(200);begin pk_test_2.test_gs(s1); end;', 
                      next_date => TRUNC(sysdate)+1+17/24,--初始执行时间
                      interval => 'TRUNC(sysdate)+1+17/24');--每天下午五点开始执行
  commit;
end;
注: what => 'declare s1 varchar2(200);begin pk_test_2.test_gs(s1); end;',  这个是执行带参数的存储过程的写法。不带参数的直接:what => 'pk_test_2.test_gs;' 就可以了。(封号一定不能掉)
2.执行 定时任务
Declare 
  job_num Integer;
Begin
 -- 查找计划号
 Select t.JOB Into job_num From User_Jobs t ;
 -- 运行制定的执行计划
 dbms_job.run(job_num);
 commit;
end;

注:如果 查找计划号 查出了不止一个计划的时候,执行 dbms_job.run(job_num); 会报错 ,因为 它仅能执行一个计划。
解决办法有:
1.在 dbms_job.run(job_num); 外面套一成循环 ,应该是可以的(没有亲测,只是猜测)。
2.利用sql 语句 Select *  From User_Jobs t  查看对应的JOB 属性值,如果有多个就找到自己计划的 JOB属性对应的值。如图

,然后把 执行语句 dbms_job.run(job_num)  改成 dbms_job.run(24) 就可以了。
3.就是利用PL/SQL 工具 在DBMS_Jobs 中去查看:


二.简单点的
1.创建定时任务
Declare 
 i Integer;
Begin
   dbms_job.submit(i,
                   ' declare s1 varchar2(200);begin pk_test_2.test_gs(s1); end;',
                   TRUNC(sysdate)+1+17/24,--初次执行的时间
                   'TRUNC(sysdate)+1+17/24');--每天下午五点执行
end;
commit;

2.执行 定时任务
  和上面的步骤一样。


讲解很详细的连接地址:http://www.cnblogs.com/soundcode/p/5912750.html  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sun_逸圣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值