oracle中job的sp,ORACLE中JOB的使用

JOB:和JAVA中的job类似,都是定时任务。

首先,建表:

-- Create table

create table MYDAILYDK

(

ID NUMBER(19) not null,

NAME VARCHAR2(255),

DKTIME DATE

)

tablespace NG_DATA

pctfree 10

initrans 1

maxtrans 255

storage

(

initial 64K

next 1M

minextents 1

maxextents unlimited

);

然后,建个存储过程,用来向表里插入数据:

create or replace procedure mbproc_mydailydk

as

begin

insert into mydailydk(id,name,dktime)

values(s_madailydk.nextval,'小明',sysdate);

commit;

end;

JOB参数简介:

/**    job参数是由Submit()过程返回的binary_ineger。这个值用来唯一标识一个工作。

what参数是将被执行的PL/SQL代码块。

next_date参数指识何时将运行这个工作。

interval参数何时这个工作将被重执行。

no_parse参数指示此工作在提交时或执行时是否应进行语法分析——TRUE

指示此PL/SQL代码在它第一次执行时应进行语法分析,

而FALSE指示本PL/SQL代码应立即进行语法分析。

*/

创建JOB:

begin

sys.dbms_job.submit(job => :job,

what => 'mbproc_mydailydk;',

next_date => to_date('08-11-2016 14:22:08', 'dd-mm-yyyy hh24:mi:ss'),

interval => 'sysdate+1');

commit;

end;

说明:ORACLE会自动生成唯一的JOB标识,就是submit的第一个参数。

查看创建的job:

select * from user_jobs;

手动运行Job,参数为自动生成的唯一标识,我的是64,把:job换成64即可,由于我的开始时间是sysdate,手动每天的这个时候去执行一次,因此查看存储过程中插入的表会有一条数据插入:

begin

dbms_job.run(:job);

end;

查看被插入的表:

select * from mydailydk;

停止job:

begin

dbms_job.broken(64, true);

end;

删除job:

begin

dbms_job.remove(64);

end;

另外,关于 dbms_job 这个pakage中的其它函数请自行查阅:change()、Interval()、Isubmit()、Next_Date()等等。

附上pakage的文档的连接:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值