在ORACLE中创建作业

问题描述 投票:1回答:1

我必须定期创建工作。

但是首先,我创建了一个简单的作业来学习如何在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;

谁能向我解释我所缺少的。

oracle stored-procedures dbms-scheduler
1个回答
0
投票

实际上是您的情况应该起作用,但是一次(假设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;
/

每五分钟插入一次新记录。

© www.soinside.com 2019 - 2024. All rights reserved.