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

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s