Pl/Sql ile geliştirdiğimiz programlarda ihtiyacımıza göre bazı işlerin otomatik veya belirli zamanlarda tekrarlı olarak çalışmasını isteriz. Örneğin her gün sistemi kontrol edip günlük döviz bilgilerini web servisten sorgulayıp sisteme kayıt etme gibi.
Bu tarz gereksinimlerimiz için Oracle tarafından bize sağlanan dbms_job paketini kullanıp sistemde zamanlanmış görevler oluşturabiliriz. Bu paketin altında bulunan submit prosedürü ile isteğimiz job kaydını yaratabiliriz. Submit prosedürü içinde bizim kullanacağımız parametreler job,what,next_date ve interval alanlarıdır. Job alanı bize oluşturdğumuz job id bilgisini verir. What alnına ise job içeriğini yazarız. Next_date alanı oluşan jobın en son çalışacağı zamanın değerini gireriz. Interval alanı ise job’ın hangi sıklıkla çalışacağını yani her gün saat birde gibi tanımla yaptığımız değerdir.
Şimdi bir tane job oluşturalım ve hergün saat 01:00:00 da bir tabloya kayıt atmasını sağlayalım:

declare
  vJob number;
begin
  dbms_job.submit(job       => vJob,
                  what      => '
                  begin
                    insert into testTable
                      (Tarih, Aciklama)
                    values
                      (sysdate, ''Tabloya kayıt yapıldı.'');
                    commit;
                  end;
                  ',
                  next_date => to_date('01/01/2040', 'dd/mm/yyyy'),
                  interval  => 'TRUNC(SYSDATE+1)+(1/24)');
  commit;
  dbms_output.put_line('Oluşan JobId:' || vJob);
end;

Leave a Reply

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir