oraclejobs_oracle数据库对象-jobs

本文介绍Oracle数据库中的定时任务Jobs,包括如何使用存储过程dbms_job.submit创建任务、基本语法解析、创建测试表、移除及强制执行计划任务的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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个参数就可以了,任务下一次执行时间是在,本次任务开始时计算出来的。

2、创建测试表

create table JOB_TEST(a date);

3、创建语句

--/

DECLARE

jobtest number;

begin

dbms_job.submit (

job => jobtest,

what => 'insert into JOB_TEST values(sysdate);',

next_date => sysdate+0.01,

interval => 'sysdate+1/24'

);

end;

/

如果next_date填写sysdate,jobs会立即执行一次。

next_date也可使用to_data()函数来格式化时间,这样时间更精确:

next_date => to_date(‘20150623110000′,’YYYY:MM:DD HH24:MI:SS’),以此来设置一个起始时间。

4、移除计划任务

remove中填写jobs的id。

--/

begin

dbms_job.remove(101);

end;

/

5、强制执行计划任务

--/

begin

dbms_job.run(101,true);

end;

/

参考资料:

http://wallimn.iteye.com/blog/519924

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值