ORACLE Nvl ve Coalesce Fonksiyonları

sira

Böyle bir arayüzümüz olsun. Sıra Numarası program çalıştığı an dinamik olarak veritabanında tutulan hasta_nakil tablosundaki sirano isimli alandan  ekrana gelsin. Bunun için şu kodu yazmamız yeterli olur diye düşünebiliriz:

Statement st = null;

Resultset res; st = connection.createStatement();

res = st.executeQuery(“select max(sırano)+1 sayı from hasta_nakil”);

while (res.next()) {

jTextField14.setText(res.getString(“SAYI”));

}

Her ne kadar bu sorgu mantık olarak doğru olsa da , hasta_nakil tablosunda  hiç bir veri yoksa (null ise) program hata verecektir. Bunu gidermek için Oracle da bulunan bu fonksiyonlar kullanılabilir. select nvl(max(sirano),0)+1 from hasta_bakil select COALESCE(max(sirano), 0)+1 sayı from hasta_nakil Bu iki fonksiyonda sorgu null döndürdüğü zaman null’un değerine 0’ı atayarak işleme devam ederler. Burada 0 yerine 1,2,3 vs de yazılabilir. Çıktı da ona göre değişir. Sadece integer değil String parametre de alabilirler. Yalnız burada max fonksiyonunda bir toplama işlemi olduğundan string veri ile hata verir.

Coalesce fonksiyonunun Nvl fonksiyonundan farkı ise  Coalesce fonksiyonu aldığı parametrelerden null olmayan ilk ifadeyi döndürür.

Reklamlar