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;
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;
相关文章推荐
- Oracle job + 存储过程学习笔记
- Oracle 11g学习笔记--角色
- ORACLE PL/SQL 集合学习笔记(一)
- Oracle性能优化学习笔记之选择最有效率的表名顺序
- [Oracle]OWI学习笔记--001
- Oracle 11g学习笔记五(完)
- Oracle PL/SQL语句基础学习笔记(下)
- ORACLE的学习笔记第二天----3.30
- Oracle 学习笔记(二)
- 《Oracle 11g SQL 和PL SQL从入门到精通》 学习笔记
- 「Oracle数据库」第一课:Oracle基础相关 学习笔记
- 包子的 oracle 学习笔记---触发器
- 步步为营 SharePoint 开发学习笔记系列 七、SharePoint Timer Job 开发
- 三、Oracle数据库之学习笔记---Oracle的表的管理
- Oracle 层次查询-学习笔记
- Oracle编程艺术学习笔记(1)
- oracle 最简单的学习笔记,增删改查,PLSQL基本语法,游标,函数,存储过程的实现
- oracle的包和大对象学习笔记
- Oracle基础学习笔记(1)
- ORACLE 学习笔记 -->存储过程,游标等