sql >> Databasteknik >  >> RDS >> Oracle

Bästa sättet att köra Oracle-frågor regelbundet

  • För körande jobb (och frågor) är DBMS_SCHEDULER verktyget att välja. Så om du vill uppdatera statusen i en tabell baserat på resultaten av din fråga, använd DBMS_SCHEDULER.

Du kan till exempel schemalägga ett jobb med följande uppdatering:

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

För att skapa jobbet schemalagt dagligen kl. 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;
/
  • Om du behöver förbereda en rapport , antingen schemalägg rapporten i rapportverktyget eller använd en materialiserad vy för att lagra resultatuppsättningen.


  1. MySQL primära nycklar

  2. Få namnet på den aktuella funktionen inuti funktionen med plpgsql

  3. Lär dig att använda MySQL-databasen

  4. LADDA DATAINFIL motsvarande i Oracle