Oracle job学习笔记

本文介绍了如何使用Oracle中的DBMS_JOB包来实现定时任务。详细解释了submit过程的参数及其用法,并提供了创建、删除定时任务的具体步骤及示例代码。

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

最近项目中要用到一个定时执行的功能,查了下才知道有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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值