oracle 创建定时任务

1 --1.创建测试表
 2 create table job_test(id integer,add_time date);
 3 
 4 --2.创建存储过程
 5 create or replace procedure prc_job_test is  
 6 begin  
 7   insert into job_test values (SEQ_TM_ID.nextval, sysdate);  
 8   commit;  
 9 end prc_job_test;
10 
11 --3.创建任务
12 declare  
13   tm_job number;  
14 begin  
15   sys.dbms_job.submit(tm_job, --任务名称  
16                       'prc_job_test;',--执行的过程  
17                       sysdate,--执行时间  
18                       'sysdate+1/(24*60*10)');--下次执行时间  
19 end;
20 
21 --4.查询任务
22 select * from dba_jobs;
23 
24 select t.*, t.rowid from job_test t order by add_time desc
25 
26 --5.执行任务
27 begin  
28 dbms_job.run(25);--25为任务的id  
29 end;   
30 
31 --6.停止任务
32 begin
33  dbms_job.broken(25, true, sysdate);
34  commit;
35 end;
36 
37 --7.删除任务
38 begin  
39 dbms_job.remove(25);  
40 end;   


1 --8.删除任务脚本
2 begin
3   for v in(select job from dba_jobs where what = 'prc_job_test;') loop
4     dbms_job.remove(v.job);
5   end loop;
6   commit;
7 end;

完整脚本例子:

--1.删除表脚本
DECLARE num NUMBER ;
BEGIN
  SELECT
    COUNT (1) INTO num
  FROM
    user_tables
  WHERE
    TABLE_NAME = 'JOB_TEST' ;
  IF num = 1 THEN
    EXECUTE IMMEDIATE '
drop table JOB_TEST
    ' ;
  END IF;
END;
/
--2.创建测试表
create table job_test(id integer,add_time date);
/
--3.创建存储过程
create or replace procedure PRC_JOB_TEST is
begin
  insert into job_test values (1, sysdate);
  commit;
end prc_job_test;
/
--4.删除任务脚本
begin
  for v in(select job from dba_jobs where what = 'PRC_JOB_TEST;') loop
    dbms_job.remove(v.job);
  end loop;
  commit;
end;
/
--5.创建任务
declare
  tm_job number;
begin
  sys.dbms_job.submit(tm_job, --任务名称
                      'PRC_JOB_TEST;',--执行的过程
                      sysdate,--执行时间
                      'sysdate+1/(24*60*10)');--下次执行时间
  COMMIT;
end;

原文链接:https://www.cnblogs.com/zyx-/p/8032954.html

posted on 2020-08-21 14:28  cwone  阅读(317)  评论(0编辑  收藏  举报