PL/SQL Exception
Oracle PL/SQL ile yazılan komutlarda ortaya çıkan hataların yönetimi için kullanılan Exception yapısı ile ilgili bilgiler yer alıyor.
Exception
Komutların çalışması sırasında oluşan hataların yönetimi için kullanılan yapılardır.
Exception türleri System-defined ve User-defined olmak üzere ikiye ayrılır.
Exception yapısı
PL/SQL Exception yapısını kullanımı aşağıdaki gibidir.
DECLARE
-- tanımlamalar
BEGIN
-- komutlar
EXCEPTION
WHEN HATA-TURU THEN
-- komutlar
WHEN OTHERS THEN
-- komutlar
END;
Örnek Exception kullanımı aşağıda yer almaktadır.
BEGIN
DBMS_OUTPUT.put_line(3/0);
EXCEPTION
WHEN ZERO_DIVIDE THEN
DBMS_OUTPUT.put_line('Sıfıra bölme hatası.');
WHEN OTHERS THEN
DBMS_OUTPUT.put_line('Tanımlanmayan bir hata oluştu.');
END;
System-defined
Oracle PL/SQL tarafından önceden oluşturulan Exception türüne System-defined denir.
System-defined exception türleri aşağıda yer almaktadır.
ACCESS_INTO_NULL, CASE_NOT_FOUND, COLLECTION_IS_NULL, DUP_VAL_ON_INDEX, INVALID_CURSOR, INVALID_NUMBER, LOGIN_DENIED, NO_DATA_FOUND, NOT_LOGGED_ON, PROGRAM_ERROR, ROWTYPE_MISMATCH, SELF_IS_NULL, STORAGE_ERROR, TOO_MANY_ROWS, VALUE_ERROR, ZERO_DIVIDE
Önceden hazırlanmış Exception türleri kullanılarak hataların bulunması, kayıt altına alınması gibi işlemler yapılır.
User-defined
Oracle PL/SQL ayrıca özel exception tanımlamaya imkan verir.
Bu Exception türlerine User-defined denir.
Özel bir Exception tanımlama aşağıdaki gibidir.
DECLARE
OZEL_HATA EXCEPTION;
BEGIN
NULL;
END;
Exception için özel bir hata kodu belirleme aşağıdaki gibidir.
DECLARE
OZEL_HATA EXCEPTION;
PRAGMA EXCEPTION_INIT (OZEL_HATA, -1453);
BEGIN
NULL;
END;
Oluşturulan hata RAISE ile tetiklenerek Exception alanında işlem yapılır.
SET SERVEROUTPUT ON;
DECLARE
OZEL_HATA EXCEPTION;
PRAGMA EXCEPTION_INIT (OZEL_HATA, -1453);
v_sayi PLS_INTEGER := '0';
BEGIN
IF v_sayi = 0 THEN
RAISE OZEL_HATA;
-- RAISE_APPLICATION_ERROR(-1453, 'Başka bir hata.');
END IF;
EXCEPTION
WHEN OZEL_HATA THEN
DBMS_OUTPUT.put_line('Özel bir hata meydana geldi.');
DBMS_OUTPUT.put_line(SQLERRM);
WHEN OTHERS THEN
DBMS_OUTPUT.put_line('Bilinmeyen bir hata meydana geldi.');
END;
RAISE_APPLICATION_ERROR fonksiyonu özel bir hata oluşturmak için hata kodu, hata mesajı ve hatanın mevcut hatalarla değiştirilip değiştirilmeyeceğini parametre olarak alır.
PL/SQL Derslerine buradan ulaşabilirsiniz.
Hayırlı günler dilerim.