能不能写一个存储过程 每隔一定时间自动运行(定时器)
dbms_job.submit() 提交作业到系统 指定它什么时候运行
--DBMS_JOB 作业调度包(指定PL/SQL过程定时自动执行)
--初始化参数init.ora
job_queue_processes = 1 --作业队列进程的个数(最大36个)
job_queue_interval = 60 --进程每隔多少时间扫描作业队列(60s)
processes=150 --并发用户的数量
open_cursors =300 --存储过程中使用游标的数量
--DBMS_JOB包中的方法
procedure submit(job out binary_integer,
what in varchar2,
next_date in date default sysdate,
interval in varchar2 default null,
no_parse in boolean default false);
procedure change(job in binary_integer,
what in varchar2,
next_date in date,
interval in varchar2);
procedure what(job in binary_integer,
what in varchar2);
procedure next_date(job in binary_integer,
next_date in date);
procedure interval(job in binary_integer,
interval in varchar2);
--实际例子
create sequence temp_seq
start with 1;
create table temp_table(
num_col number,
char_col varchar2(50));
create or replace procedure tempinsert is
begin
insert into temp_table(num_col,char_col)
values (temp_seq.nextval,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'));
commit;
end;
--注册每10秒运行一次
declare
v_job number;
begin
dbms_job.submit(v_job,'tempinsert();',sysdate,'sysdate + (10 / (24 * 60 * 60))');
commit;
end;
--删除作业
dbms_job.remove(job in binary_integer);
--查看作业信息
select * from user_jobs;
select * from dba_jobs;
内置程序包 大约有25个 都是sys拥有
[@more@]来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7724693/viewspace-980507/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/7724693/viewspace-980507/