job定时执行存储过程

--查询job

select job,broken,what,interval,t.* from user_jobs t;

--删除job

begin dbms_job.remove(109); end;

--新建job

declare
job number;
begin
dbms_job.submit(job, ‘OMGEMP_PER2USER;‘, sysdate, ‘TRUNC(SYSDATE + 1)‘);
end
commit;

  1. job job的唯一标识,自动生成的
  2. broken 是否处于运行状态,N;运行;Y:停止
  3. what 存储过程名称
  4. next_date 初次执行时间
  5. interval 执行周期
  1. 执行时间例子:
  2. 描述                    INTERVAL参数值
  3. 每天午夜12点            ‘‘TRUNC(SYSDATE + 1)‘‘
  4. 每天早上8点30分         ‘‘TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)‘‘
  5. 每星期二中午12点         ‘‘NEXT_DAY(TRUNC(SYSDATE ), ‘‘‘‘TUESDAY‘‘‘‘ ) + 12/24‘‘
  6. 每个月第一天的午夜12点    ‘‘TRUNC(LAST_DAY(SYSDATE ) + 1)‘‘
  7. 每个季度最后一天的晚上11点 ‘‘TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), ‘‘Q‘‘ ) -1/24‘‘
  8. 每星期六和日早上6点10分    ‘‘TRUNC(LEAST(NEXT_DAY(SYSDATE, ‘‘‘‘SATURDAY"), NEXT_DAY(SYSDATE, "SUNDAY"))) + (6×60+10)/(24×60)‘‘
  9. 每3秒钟执行一次             ‘sysdate+3/(24*60*60)‘
  10. 每2分钟执行一次           ‘sysdate+2/(24*60)‘
  11. 1:每分钟执行
  12. Interval => TRUNC(sysdate,‘mi‘) + 1/ (24*60) --每分钟执行
  13. interval => ‘sysdate+1/(24*60)‘  --每分钟执行
  14. interval => ‘sysdate+1‘    --每天
  15. interval => ‘sysdate+1/24‘   --每小时
  16. interval => ‘sysdate+2/24*60‘ --每2分钟
  17. interval => ‘sysdate+30/24*60*60‘  --每30秒
  18. 2:每天定时执行
  19. Interval => TRUNC(sysdate+1)  --每天凌晨0点执行
  20. Interval => TRUNC(sysdate+1)+1/24  --每天凌晨1点执行
  21. Interval => TRUNC(SYSDATE+1)+(8*60+30)/(24*60)  --每天早上8点30分执行
  22. 3:每周定时执行
  23. Interval => TRUNC(next_day(sysdate,‘星期一‘))+1/24  --每周一凌晨1点执行
  24. Interval => TRUNC(next_day(sysdate,1))+2/24  --每周一凌晨2点执行
  25. 4:每月定时执行
  26. Interval =>TTRUNC(LAST_DAY(SYSDATE)+1)  --每月1日凌晨0点执行
  27. Interval =>TRUNC(LAST_DAY(SYSDATE))+1+1/24  --每月1日凌晨1点执行
  28. 5:每季度定时执行
  29. Interval => TRUNC(ADD_MONTHS(SYSDATE,3),‘q‘)  --每季度的第一天凌晨0点执行
  30. Interval => TRUNC(ADD_MONTHS(SYSDATE,3),‘q‘) + 1/24  --每季度的第一天凌晨1点执行
  31. Interval => TRUNC(ADD_MONTHS(SYSDATE+ 2/24,3),‘q‘)-1/24  --每季度的最后一天的晚上11点执行
  32. 6:每半年定时执行
  33. Interval => ADD_MONTHS(trunc(sysdate,‘yyyy‘),6)+1/24  --每年7月1日和1月1日凌晨1点
  34. 7:每年定时执行
  35. Interval =>ADD_MONTHS(trunc(sysdate,‘yyyy‘),12)+1/24  --每年1月1日凌晨1点执行
  36. 相关方法:
  37. 修改要执行的操作:dbms_job.what(jobno,‘sp_fact_charge_code;‘);  --修改某个job名
  38. 修改下次执行时间:dbms_job.next_date(job,next_date);
  39. 修改间隔时间:dbms_job.interval(job,interval);
  40. 停止job:dbms.broken(job,broken,nextdate);
  41. dbms_job.broken(v_job,true,next_date);        --停止一个job,里面参数true也可是false,next_date(某一时刻停止)也可是sysdate(立刻停止)。

友情链接:http://blog.csdn.net/maoxiao1229/article/details/8166543

时间: 2024-10-27 04:13:59

job定时执行存储过程的相关文章

定时执行存储过程

定时执行存储过程 基础 Oracle定时器 Oracle定时器:定时执行某个存储过程. 通过pl/SQL的图形化界面可以看到.定时器包括:调度和存储过程连接口 存储过程连接口 存储过程连接口,主要告诉定时器要执行哪一个存储过程.存储过程连接口就是存储过程执行的入口.从图形化界面可以看出"Action"就是要执行的存储过程.而"Arguments"就是调用该存储过程所需要的参数类型及存储过程所调用的必须参数. 存储过程 存储过程(Stored Procedure)是在

oracle job 定时执行 存储过程

oracle job 定时执行 存储过程   一:简单测试job的创建过程案例: 1,先创建一张JOB_TEST表,字段为a 日期格式 SQL> create table JOB_TEST(a date); Table created SQL> commit; Commit complete 2,创建一个存储过程 bb 作用是往pig表中插入数据 SQL> create or replace procedure JOB_PRO_TEST as 2  begin 3  insert int

mysql 存储过程中使用事物+事件定时执行存储过程

(1)存储过程 DROP PROCEDURE IF EXISTS proc_test; CREATE PROCEDURE proc_test() BEGIN DECLARE t_error INTEGER DEFAULT 0; DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1; START TRANSACTION; insert into score_record_bak(openid, nickname, city_id, city

Oracle定时执行存储过程(转)

定时执行存储过程在平时开发中经常会用到,年前的时候自己也做了一个,由于时间关系一直没能记录,现记录下来.       首先用一个完整的例子来实现定时执行存储过程. 任务目标:每小时向test表中插入一条数据 实现方案:     1.通过 oracle 中 dbms_job 完成存储过程的定时调用     2.在存储过程中完成相应的逻辑操作 实现步骤:   1.创建一个测试表 create table test(dTime date);     2.创建一个存储过程 create or repla

ORACLE 定时执行存储过程

[sql] view plaincopy /* 查询: select job,broken,what,interval,t.* from user_jobs t; job job的唯一标识,自动生成的 broken 是否处于运行状态,N;运行:Y:停止 what 存储过程名称 next_date 初次执行时间 interval 执行周期 删除: begin dbms_job.remove(jobno); end; 根据what的内容确定其对应的job,并如此执行删除 执行时间例子: 描述    

每天定时执行存储过程

1.创建存储过程 CREATE  PROCEDURE `update_cloud_componentrepairrecorTime`() BEGIN update cloud_componentrepairrecord set StartTime = now(), Endtime =  date_add( now() , INTERVAL   datediff(Starttime ,Endtime) day ) where endtime<=now(); END 2.定时执行 CREATE EV

mysql创建定时执行存储过程任务

sql语法很多,是一门完整语言.这里仅仅实现一个功能,不做深入研究. 目标:定时更新表或者清空表. 案例:曾经做过定时清空位置信息表的任务.(然而,当时并未考虑服务器挂掉后的情况) 本次测试:每5s更新表字段+1 1.prepare 创建一个表: DROP TABLE IF EXISTS `test_sche`; CREATE TABLE `test_sche` ( `id` int(11) NOT NULL, `counts` int(11) DEFAULT NULL, PRIMARY KEY

sqlserver定时作业,定时执行存储过程

首先,我想说,我真的是渣了,一个这个玩意弄了半天,算了,直接切入正题吧. 第一步: 先写好存储过程 用了两张表,你们自己建立吧 if exists(select name from sysobjects where name='StaySchoolNum'and type='p') drop proc StaySchoolNum go create proc StaySchoolNum as declare @init int,@totle int select @init=count(*) f

oracle job定时执行存储过程

JOB定时跑插入语句1.建插入数据的存储过程create or replace procedure report_web asV_START_DATE DATE;V_END_DATE  DATE;beginV_START_DATE := TRUNC(SYSDATE) - 1;V_END_DATE    := TRUNC(SYSDATE);begininsert into [email protected]select * from report_web_doctor awhere a.last_