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 --1.删除表脚本 2 DECLARE num NUMBER ; 3 BEGIN 4 SELECT 5 COUNT (1) INTO num 6 FROM 7 user_tables 8 WHERE 9 TABLE_NAME = 'JOB_TEST' ; 10 IF num = 1 THEN 11 EXECUTE IMMEDIATE ' 12 drop table JOB_TEST 13 ' ; 14 END IF; 15 END; 16 / 17 --2.创建测试表 18 create table job_test(id integer,add_time date); 19 / 20 --3.创建存储过程 21 create or replace procedure PRC_JOB_TEST is 22 begin 23 insert into job_test values (1, sysdate); 24 commit; 25 end prc_job_test; 26 / 27 --4.删除任务脚本 28 begin 29 for v in(select job from dba_jobs where what = 'PRC_JOB_TEST;') loop 30 dbms_job.remove(v.job); 31 end loop; 32 commit; 33 end; 34 / 35 --5.创建任务 36 declare 37 tm_job number; 38 begin 39 sys.dbms_job.submit(tm_job, --任务名称 40 'PRC_JOB_TEST;',--执行的过程 41 sysdate,--执行时间 42 'sysdate+1/(24*60*10)');--下次执行时间 43 COMMIT; 44 end;