pl/sql de exception kullanımı
Merhaba
Her işlemde olduğu gibi yazılım geliştirmede de hatalar alırız. Önemli olan hata almak değil aldığımız ya da almayı beklediğimiz hataları doğru bir şekilde yönetmektir. Hazırladığımız programlarda doğru bir hata yönetimi yaparsak bize bu hatalar için çok az geri dönüş olur. Ama doğru bir hata yönetimi yapmayıp olduğu gibi düz bir planda programlarımızı geliştirirsek geri dönen hataları ayıklamak ve düzeltmek programı yazmak için harcadığımız zamandan fazlasını alır. Bu bilgiler doğrultusunda doğru bir exception kullanımı ile pl/sql de geliştirdiğimiz programlarımızda hata yönetimini yapabiliriz. Temel olarak iki çeşit exception kullanımı mevcuttur. Birincisi pl/sql de sistem tarafından bizim için tanımlanan exception türlerinin kullanımı. İkincisi ise bizim tanımlayacağımız exception türlerinin kullanımıdır.
Pl/Sql de hazır bulunan exception türlerinden bazıları şunlardır;
- no_data_found
- zero_divide
- too_many_rows
- dup_val_on_index
- others
- …
Bu şekilde devam edip gider. Burada tüm exception tiplerini anlatmayacağım. Sadece genel olarak çok kullanılan exception tiplerine değineceğim. Şimdi sırasıyla bu exception türlerini örnekler ile inceleyelim.
Daha fazlasını oku…
pl/sql de sqlerrm kullanımı
Merhaba,
Pl/sql ortamında ya da Oracle forms ortamında yazdığımız programlarda çoğu zaman Oracle hatası alırız. Doğru bir hata yönetimimiz olmaz ise yani exception satırlarımızda yeterli bilgilendirme yapmaz isek bu hataları bulmak bazı durumlarda çok zor olabilir. Bu gibi durumlarda hatanın meydana geldiği scripti ve hatanın ne olduğu konusundaki detaylı bilgiyi Oracle’ın SQLERRM komutu ile rahatça öğrenebiliriz.Tabi bu durumu daha net anlamak için örneklerimize bir göz atalım.
Örnek olarak bir tabloya insert işlemi yapalım ve bu insert işlemi sırasında alabileceğimiz hataları SQLERRM kullanmadan görelim. Daha sonraki örneğimizde de SQLERRM komutu ile gelen uyarı/hata mesajını inceleyelim.
Aşağıdaki örneğimizde kullandığımız tablonun id bilgisi not null bir alan ve bu alana null veri kayıt etmeye çalıştığımızda scriptin exception satırına düşeceğiz.
DECLARE BEGIN BEGIN INSERT INTO sqlerrm_example_table (set_id, set_aciklama) VALUES (NULL, 'SQLERRM Kullanılmayan Insert'); EXCEPTION WHEN OTHERS THEN dbms_output.put_line('Kayıt İşleminde Bir Hata Oldu'); END; END;
Script içerisinde görüldüğü gibi exception satırından bize aşağıdaki uyarı gelecektir.
Kayıt İşleminde Bir Hata Oldu
Ama bu script yerine aşağıdaki gibi SQLERRM komutunu kullandığımız scriptler hazırladığımızda hatayı bulmamız ve hastanın sebebini öğrenmemiz daha kolay olur.
DECLARE BEGIN BEGIN INSERT INTO sqlerrm_example_table (set_id, set_aciklama) VALUES (NULL, 'SQLERRM Kullanılan Insert'); EXCEPTION WHEN OTHERS THEN dbms_output.put_line('Kayıt İşleminde Bir Hata Oldu' || chr(13) || SQLERRM); END; END;
Mevcut scriptimizi yukarıdaki gibi güncellediğimizde ise aşağıdaki gibi daha sağlıklı ve hata hakkında daha fazla bilgi veren bir mesaj elde etmiş oluruz.
Kayıt İşleminde Bir Hata Oldu ORA-01400: ("SQLERRM_EXAMPLE_TABLE"."SET_ID") içine NULL eklenemez
Bu uyarıyı aldığımız zaman insert satırımızdaki NULL olarak gönderdiğimiz id bilgisine değer verdiğimizde sorunsuz kayıt işlemimizi yapabiliriz.
DECLARE BEGIN BEGIN INSERT INTO sqlerrm_example_table (set_id, set_aciklama) VALUES (1, 'SQLERRM ve Id Bilgisi Kullanılan Insert'); EXCEPTION WHEN OTHERS THEN dbms_output.put_line('Kayıt İşleminde Bir Hata Oldu' || chr(13) || SQLERRM); END; END;
Bu script ile sorunsuz olarak kayıt işlemimi yaptığımıza göre tabloya select atıp kayıt sonucumuzu görebiliriz.
SELECT * FROM sqlerrm_example_table;
İşte bu select sonucunda sorunsuz olarak tabloya kayıt ettiğimiz veri karşımızda.
SET_ID | SET_ACIKLAMA |
---|---|
1 | SQLERRM ve Id Bilgisi Kullanılan Insert |
Bu örneğimizde sadece insert işlemi üzerinde SQLERRM komutunu kullandık. Bu komut yazmış olduğumuz tüm scriptlerimiz için kullanılabilinir. Select , update , insert işlemlerinde de SQLERRM komutu rahatlıkla kullanılabilinir.
Kolay gelsin.