Oracle
 sql >> база данни >  >> RDS >> Oracle

Най-добрият начин да изпълнявате периодично заявки на Oracle

  • За изпълнение на задания (и заявки) DBMS_SCHEDULER е инструментът, който можете да изберете. Така че, ако искате даактуализирате състоянието в таблица въз основа на резултатите от вашата заявка, използвайте DBMS_SCHEDULER.

Например можете да планирате работа, като изпълните следната актуализация:

update x
   set status = (CASE 
                   WHEN sysdate < x.DUE_DATE - y.WARN THEN
                     'Ok'
                   WHEN sysdate >= x.DUE_DATE - y.WARN and today < x.DUE_DATE - y.CRITICAL THEN
                     'Warn'
                   WHEN sysdate >= x.DUE_DATE - y.CRITICAL and sysdate <= x.DUE_DATE THEN
                     'Critical'
                   WHEN sysdate > x.DUE_DATE THEN
                     'Overdue'
                 END)
;

За да създадете заданието, планирано всеки ден в 00:00:

BEGIN
    dbms_scheduler.create_job(job_name => 'Status Updater',
                              job_type => 'PLSQL_BLOCK',
                              job_action => '
                                             BEGIN 
                                              update x
                                                set status = (CASE 
                                                                WHEN sysdate < x.DUE_DATE - y.WARN THEN
                                                                  ''Ok''
                                                                WHEN sysdate >= x.DUE_DATE - y.WARN and today < x.DUE_DATE - y.CRITICAL THEN
                                                                  ''Warn''
                                                                WHEN sysdate >= x.DUE_DATE - y.CRITICAL and sysdate <= x.DUE_DATE THEN
                                                                  ''Critical''
                                                                WHEN sysdate > x.DUE_DATE THEN
                                                                  ''Overdue''
                                                              END)
                                                 ;
                                              END;',
                              start_date => systimestamp,
                              repeat_interval => 'FREQ=DAILY;INTERVAL=1;BYHOUR=0;BYMINUTE=0;',
                              enabled => TRUE);
END;
/
  • Ако трябва да изготвите отчет , или насрочете отчета в инструмента за отчитане, или използвайте Материализиран изглед, за да съхраните набора от резултати.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 3 начина за форматиране на число до 2 знака след десетичната запетая в Oracle

  2. Конфигурация на източник на данни на Oracle за Spring

  3. Каква е настройката за преглед на частта от часа с дата в разработчика на Oracle PL/SQL?

  4. ORA-27154 / ORA-27146

  5. Обработка на грешки в Oracle