Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Cara terbaik untuk menjalankan kueri Oracle secara berkala

  • Untuk menjalankan pekerjaan (dan kueri) DBMS_SCHEDULER adalah alat untuk dipilih. Jadi jika Anda ingin memperbarui status dalam tabel berdasarkan hasil kueri Anda, gunakan DBMS_SCHEDULER.

Misalnya, Anda dapat menjadwalkan pekerjaan untuk melakukan pembaruan berikut:

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

Untuk membuat pekerjaan yang dijadwalkan setiap hari pada pukul 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;
/
  • Jika Anda perlu menyiapkan laporan , jadwalkan laporan di alat pelaporan atau gunakan Tampilan Terwujud untuk menyimpan kumpulan hasil.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah inner join sama dengan equi-join?

  2. Bagaimana cara memuat sejumlah besar string agar sesuai dengan database Oracle?

  3. Apakah kebuntuan mungkin terjadi saat memperbarui dan menghapus baris yang berbeda dalam sebuah tabel?

  4. Fungsi TRUNC(angka) di Oracle

  5. Perbedaan penanganan spasi antara Oracle dan SQL Server