Bu Kategoriye İçerik Girin veya Soru Sorun

Kategori İçi Sözlük

Bu Sayfayı Paylaş:

Exception Genel Yapısı

Exception yakalama ve işlemenin genel yapısı aşağıdaki gibi gösterilebilir:
DECLARE
--deklare bölümü
BEGIN
--kod bolumu
EXCEPTION
--tum hatalarda calisir
   WHEN exception1 THEN 
--sadece exception1 için çalışır
   WHEN exception2  THEN 
--sadece exception2 için çalışır
   ........
   WHEN others THEN
-- diğer exception tipleri için çalışır
END;

Pre-Defined Exception Listesi

Oracle'da ön tanımlı olarak aşağıdaki Exception'lar bulunmaktadır:
ExceptionOracle Hata KoduSQL KoduAçıklama
ACCESS_INTO_NULLORA-06530-6530Null olan bir nesneye erişilmeye çalışıyor
CASE_NOT_FOUNDORA-06592-6592Case yapısında Else kullanılmadığı ve farklı bir seçenek oluştuğunda oluşur
COLLECTION_IS_NULLORA-06531-6531Collection olmayan bir nesneye collection gibi erişilmeye çalışılıyor
CURSOR_ALREADY_OPENORA-06511-6511Açık olan cursor yeniden açılmaya çalışılıyor
DUP_VAL_ON_INDEXORA-00001-1Uniq bir sütuna duplicated güncellemes yapmaya çalışılıyor
INVALID_CURSORORA-01001-1001Geçersiz bir cursor işlemi yapılıyor. Örneğin açık olmayan bir cursor kapatılmaya çalışılıyor
INVALID_NUMBERORA-01722-1722Karakter number'a çevrilemiyor geçersiz format
LOGIN_DENIEDORA-01017-1017username veya password geçersiz olduğu durumda oluşur
NO_DATA_FOUNDORA-01403+100select into sonucu hiç kayıt gelmemesi
NOT_LOGGED_ONORA-01012-1012veritabanına login olunmadan istek yapılıyor
PROGRAM_ERRORORA-06501-6501PL/SQL çalışması sırasında bir hata oluşyur
ROWTYPE_MISMATCHORA-06504-6504Cursor'da geçersiz bir tipe fetch yapılıyor
SELF_IS_NULLORA-30625-30625Null olan bir şey kullanılmaya çalışılıyor
STORAGE_ERRORORA-06500-6500Memery ile ilgili bir hata
SUBSCRIPT_BEYOND_COUNTORA-06533-6533Bir collection'un index sayısından büyük bir index ile erişiliyor
SUBSCRIPT_OUTSIDE_LIMITORA-06532-6532Bir collection'una geçersiz bir index ile erişiliyor
SYS_INVALID_ROWIDORA-01410-1410karakter , rowid formatına uygun değil
TIMEOUT_ON_RESOURCEORA-00051-51Bir kaynağı beklerken timeout oluştu
TOO_MANY_ROWSORA-01422-1422select into bir satırdan fazla kayıt döndürdü
VALUE_ERRORORA-06502-6502Aritmetik, tip dönüştürme, truncate işlemi, tipin size'na bağlı bir işlem sırasında hata oluştu
ZERO_DIVIDEORA-01476-1476Sıfıra bölme hatası

Exception Tanımlanan ve Fırlatılan Örnek

Oracle'da kullanıcı bir exception tanımlayabilir ve gerektiğinde onu fırlatabilir. Aşağıdaki örnekte id değerini 0'dan küçük ise exception fırlatılmaktadır :
declare
e_id EMPLOYEES.EMPLOYEE_ID%TYPE:=100;
e_mail EMPLOYEES.EMAIL%TYPE; 
ex_invalid_id exception;
begin
if e_id <= 0 then
    raise ex_invalid_id;
else
    select email into e_mail from employees where employee_id=e_id;
    dbms_output.put_line('email :' || e_mail );
end if;
exception
   when ex_invalid_id then
      dbms_output.put_line('id 0 dan buyuk olmali');
   when no_data_found then
      dbms_output.put_line('employee yok');
   when others then
      dbms_output.put_line('bilinmeyen bir hata'); 
end;
/
e_id değişkekinin değeri değiştirerek kod test edilebilir. Örneğin -1 verilirse ouput'ta "id 0 dan buyuk olmali" yazısı görülür. ex_invalid_id bizim tanımladığımız bir exception'dır ve raise ex_invalid_id; şeklinde gerektiğinde fırlatılabilir.



Bu Sayfayı Paylaş:

İletişim Bilgileri

Takip Et

Her Hakkı Saklıdır. Bu sitede yayınlanan tüm bilgi ve fikirlerin kullanımından fibiler.com sorumlu değildir. Bu sitede üretilmiş , derlenmiş içerikleri, fibiler.com'u kaynak göstermek koşuluyla kendi sitenizde kullanılabilirsiniz. Ancak telif hakkı olan içeriklerin hakları sahiplerine aittir