您的位置:首页 > 数据库 > Oracle

Oracle job学习笔记

2010-04-04 22:55 295 查看
最近项目中要用到一个定时执行的功能,查了下才知道有Oracle
job(Oracle作业)这个东西(对Oracle了解的太少,就只知道写sql语句了),在网上复制了一段创建的代码,结果在plsql中弄了半天连
编译都没通过,这东西真够博大精深的,哈哈,然后又在网上查,结果发现贴出来的sql都差不多,还是没搞懂怎么编译通过的,没办法,只好照着他的错误提示
一遍一遍的改,累死累活的总算改对了.

先看一下语法

Submit ( job OUT binary_ineger,

What IN varchar2,

next_date IN date,

interval IN varchar2,

no_parse IN booean:=FALSE)

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

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

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

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

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

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

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

增加Oracle job一般都是这两种方法,如下

--1.这种方法可以在命令/sql窗口中执行,执行完后不会输出jobid

declare

jobid number;

begin

dbms_job.submit(jobid,'test;',sysdate,'sysdate+1/1440');--test后面必须跟分号,最后一个参数必须为varchar类型(加引号)

commit;--创建job也需要提交,否则不会调用test

end;

/

--如果需要删除job用这种方法(当然也可以用鼠标在plsql中操作)

exec dbms_job.remove(85);--85指的是jobid的值(视创建后产生的值而定),这里不能直接用:jobid,之后也需要提交

--2.这种方法只能在命令窗口中执行,执行完后会输出jobid

variable jobid number;

begin

dbms_job.submit(:jobid,'test;',sysdate,'sysdate+1/1440');

commit;

end;

/

--删除

exec dbms_job.remove(:jobid);--这里可以直接用:jobid,之后也需要提交

上面增加的job其实是没隔一分钟调用一次test这个存储过程,这个存储过程则是往表a中插入一条记录

create or replace procedure test

as

begin

insert into a(aaa) values(to_char(sysdate,'yyyy-mm-dd hh:mi:ss'));

end;

/

crete table a(aaa varchar2(20));/

暂时把它创建好了,也能执行了,但是关键的next_date , interval这两个参数还没弄懂,继续学习.....

完整例子代码:

create table super.a(aaa varchar2(20));

create or replace procedure test

as

begin

insert into super.a(aaa) values(to_char(sysdate,'yyyy-mm-dd hh:mi:ss'));

end;

variable jobid number;

begin

dbms_job.submit(:jobid,'test;',sysdate,'sysdate+1/1440');

commit;

end;

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

exec dbms_job.remove(:jobid);

drop procedure test;

drop table super.a;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: