jobs是oracle数据库对象之一,定时任务。通过调用存储过程dbms_job.submit将任务加入到任务队列中。
查看dbms_job包,它有两个存储过程:
PROCEDURE isubmit ( job IN BINARY_INTEGER,
what IN VARCHAR2,
next_date IN DATE,
interval IN VARCHAR2 DEFAULT 'null',
no_parse IN BOOLEAN DEFAULT FALSE);
-- Submit a new job with a given job number.
PROCEDURE submit ( job OUT BINARY_INTEGER,
what IN VARCHAR2,
next_date IN DATE DEFAULT sysdate,
interval IN VARCHAR2 DEFAULT 'null',
no_parse IN BOOLEAN DEFAULT FALSE,
-- Bug 1346620: replace pkg vars with constants.
-- Default for instance = dbms_job.any_instance.
instance IN BINARY_INTEGER DEFAULT 0,
force IN BOOLEAN DEFAULT FALSE );
-- Submit a new job. Chooses JOB from the sequence sys.jobseq.
-- instance and force are added for jobq queue affinity
-- If FORCE is TRUE, then any positive integer is acceptable as the job
-- instance. If FORCE is FALSE, then the specified instance must be running;
-- otherwise the routine raises an exception.
-- For example,
-- variable x number;
-- execute dbms_job.submit(:x,'pack.proc(''arg1'');',sysdate,'sysdate+1');
注意我们用的是PROCEDURE submit这个存储过程。
1、基本语法
submit ( job OUT BINARY_INTEGER,
what IN VARCHAR2,
next_date IN DATE DEFAULT sysdate,
interval IN VARCHAR2 DEFAULT 'null',
no_parse IN BOOLEAN DEFAULT FALSE,
);
说明:
job:输出变量,是此任务在任务队列中的编号
what:执行的存储过程或sql语句
next_date:任务第一次执行的时间
interval:注意不是每次执行的间隔时间,而是下一次的执行时间,在本次执行之前对这个表达式求值算出下一次执行时间,所以一般都是sysdate加多少算出来的。
一般我们只要改前4个参数就可以了,任务下一次执行时间是在,本次任务开始时计算出来的。
继续阅读oracle数据库对象-jobs →