sql >> Databáze >  >> RDS >> Oracle

Nejlepší způsob, jak pravidelně spouštět dotazy Oracle

  • Pro spouštění úloh (a dotazů) je nástroj DBMS_SCHEDULER, který si můžete vybrat. Pokud tedy chcete aktualizovat stav v tabulce na základě výsledků vašeho dotazu použijte DBMS_SCHEDULER.

Můžete například naplánovat úlohu provedení následující aktualizace:

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)
;

Chcete-li vytvořit úlohu naplánovanou denně v 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;
/
  • Pokud potřebujete připravit přehled , buď naplánujte sestavu v nástroji pro vytváření sestav, nebo použijte materializované zobrazení k uložení sady výsledků.


  1. pgpredict – Prediktivní analytika v PostgreSQL

  2. Jak získat přístup k databázi Oracle přes síť?

  3. Nejlepší databázové blogy ke sledování

  4. Proč dostanu PLS-00302:komponenta musí být deklarována, když existuje?