Change Font Size

Change Screens

Change Profile

Change Layouts

Change Direction

Change Menu Styles

Cpanel
Tarihe göre etiket öğelerini görüntüle: loglamak

Oracle Hatalarını Output’a yazdırmak ve Loglamak

Merhaba arkadaşlar,

Bu makalede sık sık başımıza gelen bir konuya değineceğim. Oracle veritabanıyla çalışırken karşımıza cıkan ORA-… ile başlayan hatalar, yazdığımız prosedürün çalışmasını keser veya prosedürü dışarıdan bir arayüzden çağırıyorsak (.Net/JAVA/DELPHI v.s. ..) programın çakılmasına yol açar. Bu gibi durumlarda PLSQL bloklarımızın içinde, diğer dillerdeki Try-Catche mantığıyla çalışan “EXCEPTION” bloklarını yerleştireceğiz.

Oracle hatalarını yakalamak ve üzerinde işlem yapmak için (yazdırmak veya loglamak gibi…) “SQLERRM” parametresini kullanacağız. Basitçe aşağıdaki gibi bir örnekle açıklayalım :

DECLARE 

V_STRING VARCHAR2(3); 

BEGIN 

V_STRING := 'ERCAN';

DBMS_OUTPUT.PUT_LINE(V_STRING); 

END;

1

Görüldüğü gibi PLSQL bloğu çalışmadı ve hata verdi çünkü 3 karakterlik tanımladığımız varchar2 değişkene 5 karakterlik değer atadığımızdan dolayı ‘buffer too small’ hatasını aldık. Şimdi exception bloğu ekleyerek tekrar çalıştıralım :

DECLARE 

V_STRING VARCHAR2(3); 

BEGIN 

V_STRING := 'ERCAN'; 

DBMS_OUTPUT.PUT_LINE(V_STRING); 

EXCEPTION 

WHEN OTHERS THEN 

DBMS_OUTPUT.PUT_LINE(SQLERRM); 

END; 

PL/SQL procedure successfully completed.

2

Görüldüğü gibi exception bloğu sayesinde prosedür çalışıyor ve hatayı ekrana yazıyor.

Gelelim  hatayı loglamaya..

Aşağıdaki gibi bir table oluşturuyoruz.

CREATE TABLE ORA_LOG_TABLE( 

ORA_ERROR_CODE VARCHAR2(10), 

ORA_ERROR_MESSAGE VARCHAR2(100), 

ORA_USER VARCHAR2(12) DEFAULT USER, 

CUR_DATE DATE DEFAULT CURRENT_DATE 

); 

Table created.

Şimdi bloğumuzu aşağıdaki şekilde düzenliyoruz :

DECLARE 

V_STRING VARCHAR2(3); 

V_HATA_KOD VARCHAR2(10);

V_HATA_MESAJ VARCHAR2(100);

BEGIN

V_STRING := 'ercan';

DBMS_OUTPUT.PUT_LINE(V_STRING);

EXCEPTION

WHEN OTHERS THEN

V_HATA_KOD := SUBSTR(SQLERRM,1,9);

V_HATA_MESAJ := SUBSTR(SQLERRM,11,LENGTH(SQLERRM));

INSERT INTO ORA_LOG_TABLE(ORA_ERROR_CODE, ORA_ERROR_MESSAGE)

VALUES(

V_HATA_KOD,

V_HATA_MESAJ

);

COMMIT;

END;

PL/SQL procedure successfully completed.

SELECT * FROM ORA_LOG_TABLE;

3

Evet arkadaşlar, böylelikle ORA hatasını program çakılmasına sebep olmadan, yakaladık ve log’lamış olduk. Faydalı olmasını umarak iyi çalışmalar diliyorum.


Kategori Oracle
You are here Kategoriler ORACLE Tarihe göre etiket öğelerini görüntüle: loglamak