5
2015
Custom Form içerisinde Zamanlayıcı Kullanmak
Merhaba,
Custom form eventleri üzerinden çalışacak tekrarlı ve veya tekrarsız zamanlayıcılar çalıştırarak form üzerinde işlemler yapmak mümkündür. Bu işlemleri bir örnek üzerinden açıklamak gerekirse,
Zamanlayıcı işlemleri TIMER isimli obje ile yapılmaktadır.
DECLARE L_TIMER TIMER; P_TIMER_NAME VARCHAR2(150) := 'X_TIMER'; P_DELAY NUMBER := 1; BEGIN BEGIN L_TIMER := FIND_TIMER(P_TIMER_NAME); IF NOT ID_NULL(L_TIMER) THEN DELETE_TIMER(L_TIMER); END IF; L_TIMER := CREATE_TIMER(P_TIMER_NAME, P_DELAY, NO_REPEAT); END; |
şeklinde başlatılabilir. Bu işlem zamanlayıcının başlatılması işlemidir.Zamanlayıcı başladıktan sonra çalışma zamanı bittiğinde form triggerlarından WHEN-TIMER-EXPIRED trigger ı tetiklenir.Eğer bu trigger yoksa form triggerları altına eklenmelidir !
WHEN-TIMER-EXPIRED içerisinde istenilen kodlama çalıştırılabilir.
Zamanlayıcı ile ilgili olarak hazırlanmış bir kodlama çözümü aşağıdaki gibidir:
1-Zamanlayıcıların başlatılması için UTIL isimli bir paket Program Birimleri içerisine oluşturulur.
PACKAGE UTIL IS PROCEDURE ONE_SHOT_TIMER(P_TIMER_NAME IN VARCHAR2, P_DELAY IN NUMBER := 1); PROCEDURE REPEATING_TIMER(P_TIMER_NAME IN VARCHAR2, P_DELAY IN NUMBER); END UTIL; ---------------------------------------------------------------------------------------------------- PACKAGE BODY UTIL IS PROCEDURE ONE_SHOT_TIMER(P_TIMER_NAME IN VARCHAR2, P_DELAY IN NUMBER := 1) IS L_TIMER TIMER; BEGIN L_TIMER := FIND_TIMER(P_TIMER_NAME); IF NOT ID_NULL(L_TIMER) THEN DELETE_TIMER(L_TIMER); END IF; L_TIMER := CREATE_TIMER(P_TIMER_NAME, P_DELAY, NO_REPEAT); END ONE_SHOT_TIMER; ---------------------------------------------------------------------------------------------------- PROCEDURE REPEATING_TIMER(P_TIMER_NAME IN VARCHAR2, P_DELAY IN NUMBER) IS L_TIMER TIMER; BEGIN L_TIMER := FIND_TIMER(P_TIMER_NAME); IF NOT ID_NULL(L_TIMER) THEN DELETE_TIMER(L_TIMER); END IF; L_TIMER := CREATE_TIMER(P_TIMER_NAME, P_DELAY, REPEAT); END REPEATING_TIMER; ---------------------------------------------------------------------------------------------------- END UTIL; |
2-TIMER_EXPIRED isimli bir procedure yaratılır , zamanlayıcı tamamlandığında çalışacak programları içinde barındırır.
PROCEDURE TIMER_EXPIRED IS L_TIMER_NAME VARCHAR2(150) := NVL(GET_APPLICATION_PROPERTY(TIMER_NAME), '*'); BEGIN IF L_TIMER_NAME = 'OPERASYON' THEN GO_BLOCK('OPERASYON'); CLEAR_BLOCK(NO_VALIDATE) ; EXECUTE_QUERY; SYNCHRONIZE; END IF; END; |
3-WHEN-TIMER-EXPIRED triggerı içerisinden TIMER_EXPIRED procedure çağırılır.
4-Artık hazır hale gelen zamanlayıcı sisteminde OPERASYON isimli zamanlayıcı istenilen yerden çalıştırılabilir
UTIL.ONE_SHOT_TIMER(‘OPERASYON’, 50);
50 milisaniye sonra çalışır.
Mustafa Korkmaz
Oldu, 2011 Yılında Ahmet Yesevi Üniversitesi Bilgisayar Mühendisliğinde
Yüksek Lisansını Tamamlandı,2012 Yılında Doğuş Üniversitesinde Bilgisayar
Mühendisliği Doktora Eğitimine Başladı.10 yılı aşkın bir zamandır Oracle
Ürünleri Uygulama Yazılım Uzmanı Olarak profesyonel kariyerine devam
etmektedir. İlgi alanları Middleware, CI/CD,
Oracle Database , PL/SQL , Java , Makine Öğrenmesi ve Veri Madenciliği alanlarındadır.
2 versiyon Oracle Database ' (10g, 11g) inde OCA(Oracle Certificate Associate) ve
PL/SQL Certificated Professional ünvanları bulunmaktadır.
Mail: mustafakorkmz@gmail.com
Latest posts by Mustafa Korkmaz (see all)
- Log4j CVE-2021-45046 Zafiyeti - 16 Aralık 2021
- Materialized View Verisi Purge ya da Delete (atomic_refresh) - 12 Kasım 2021
- HTML Görüntüsü için Unicode Dönüşümü - 27 Temmuz 2020