Запускайте оракульный запрос (SQL) каждые 30 секунд, и если число равно 8, оно должно продолжаться и завершить работу
Я искал решение моей проблемы в интернете, но не смог найти подходящее решение. Могут ли некоторые помочь и привести меня с некоторыми примерами.
В консоли Oracle em у меня есть задание, которое выполняется не менее 1 часа, и в процессе выполнения задания оно обновит несколько таблиц в Oracle.
По сути, я хочу, чтобы SQL-запрос выполнялся каждую 1 минуту, а если счет равен 8, он должен остановиться и двигаться вперед....
TABLE_NAME: TASK - эта таблица будет обновляться в течение 1 часа обработки
ID TYPE_ID VALUE
1 12 TEST1
2 13 TEST2
3 14 TEST3
4 15 TEST4
5 16 TEST5
Ценю твою помощь.
1 ответ
Вы можете создать работу и запланировать ее, используя DBMS_SCHEDULER. Вся ваша логика может находиться в процедуре PL/SQL , а затем планировать выполнение процедуры через определенные промежутки времени.
Например,
SQL> BEGIN
2 DBMS_SCHEDULER.create_job (
3 job_name => 'test_job',
4 job_type => 'PLSQL_BLOCK',
5 job_action => 'BEGIN my_job_procedure; END;',
6 start_date => SYSTIMESTAMP,
7 repeat_interval => 'freq=0; byminute=0; bysecond=30;',
8 end_date => NULL,
9 enabled => TRUE,
10 comments => 'Job defined entirely by the CREATE JOB procedure.');
11 END;
12 /
PL/SQL procedure successfully completed.
SQL>
SQL> SELECT JOB_NAME, ENABLED FROM DBA_SCHEDULER_JOBS where job_name ='TEST_JOB'
2 /
JOB_NAME ENABL
-------------------- -----
TEST_JOB TRUE
SQL>
Вышеуказанная работа будет запускаться в соответствии с вашим SYSTIMESTAMP, а затем выполнить процедуру my_job_procedure
каждые 30 секунд.
Смотрите больше примеров здесь.