Запускайте оракульный запрос (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 секунд.

Смотрите больше примеров здесь.

Другие вопросы по тегам