Создать работу в ORACLE - PullRequest
       50

Создать работу в ORACLE

1 голос
/ 27 октября 2019

Мне нужно периодически создавать работу.

Но сначала я создал простую работу, чтобы научиться создавать рабочие места в 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;

Может кто-нибудь объяснить мне, что мне не хватает.

1 Ответ

0 голосов
/ 27 октября 2019

Действительно, ваш случай должен работать, но один раз (, если уже существует строка со значением id, равным 1 ). Предположим, у вас есть оператор вставки, а не обновление, но он не повторяется, чтобы заполнить таблицу новыми увеличенными значениями идентификатора.

Для этого важным моментом является добавление аргумента 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;
/

, который вставляет новые записи каждые пять минут.

...