我必须定期创建工作。
但是首先,我创建了一个简单的作业来学习如何在oracle中创建作业,因为这是我第一次使用作业。
它在systimestamp上运行,但是作业没有执行。
create or replace procedure job_test
is
begin
update table_a set value_user = 'JOB_EXECUTED' where id = 1;
commit;
end;
/
然后调度程序作业
begin
dbms_scheduler.create_job(
job_name => 'test_job_A',
job_type => 'stored_procedure',
job_action => 'job_test',
start_date = SYSTIMESTAMP,
enabled => true
);
end;
/
然后,我查询了value_user列,但尚未更新。
select * from table_A where id = 1;
谁能向我解释我所缺少的。
实际上是您的情况应该起作用,但是一次(假设id已经存在一行,其id值等于1)。假设您有一个插入语句而不是更新语句,但是不重复使用新的递增ID值填充表。
为此,重要的是添加repeat_interval
参数,如下所示:
begin
dbms_scheduler.create_job(
job_name => 'test_job_A',
job_type => 'stored_procedure',
job_action => 'job_test',
start_date => SYSTIMESTAMP,
enabled => true,
repeat_interval => 'FREQ=MINUTELY;INTERVAL=5',
auto_drop => false,
comments => 'Inserts new records'
);
end;
/
每五分钟插入一次新记录。