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

Oracle job 使用

2009-12-22 17:43 232 查看
步骤:

(1) 创建作业

(2) 创建job

dbms_job.submit();

submit ( jobno OUT binary_ineger,
       What   IN varchar2,
       next_date IN date,
       interval IN varchar2,
       no_parse IN booean:=FALSE)
  
  jobno参数是由Submit()过程返回的binary_ineger。这个值用来唯一标识一个工作。
  what参数是将被执行的PL/SQL代码块 也就是task。
  next_date参数指识何时将运行这个工作。
  interval参数何时这个工作将被重执行。
  no_parse参数指示此工作在提交时或执行时是否应进行语法分析——TRUE指示此PL/SQL代码在它第一次执行时应进行语法分析,而 FALSE指示本PL/SQL代码应立即进行语法分析。

(3) 运行

dbms_job.run(jobno);

(4) 删除

dbms_job.remove(jobno)



--暂停一个job
exec dbms_job.broken(jobno,true)
commit //必须提交否则无效
启动一个job
exec dbms_job.broken(jobno,false)

/*********************************************************************************/

eg: 通过job 每过一分钟向一张表里面插入一条数据

create or replace package body test is
--创建表
procedure createTable is
num number;
begin
--查看系统表里是否已经存在,没有创建

select count(*) into num from user_tables where table_name= 'TEMP_JOB';
if (num>0) then
--删除表
execute immediate 'drop table temp_job';
commit;
end if;
--创建表
execute immediate 'create table temp_job(
address varchar2(200),
sDate date
)';
commit;
end createTable;



--创建一个task 往表里插入记录
procedure insertRecord as
begin
insert into temp_job(address,Sdate) values('MM'||sysdate,sysdate);
commit;
end insertRecord ;



--创建一个Scheduling 调度器
procedure scheJob is
jobno NUMBER;
begin
--创建表
test.createTable;
commit;
--创建job
dbms_job.submit(jobno,'scott.test.insertRecord;',sysdate,'sysdate+1/1440');--必须加上用户.包名.存储过程名 否则报必须说明标识符 'insertRecord'错误
commit;
--每天1440分钟,即一分钟运行test过程一次
--运行job
dbms_job.run(jobno);
commit;
--删除job
--dbms_job.remove(jobno);
end scheJob;

end test;





运行存储过程

Command Window 窗口

exec scott.test.scheJob ;--用户名.包名.存储过程名

结果:

select * form temp_job;

表 temp_job每隔一分钟多一条记录。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: