Oracle da SUM ile NVL kullanımı

/* 1. Aşağıdaki sorgu kriterlere uyan bir kayıt bulamazsa hiç satır getirmeyecektir*/
select tahsilat_ttr
into deger1
from tablo1
where musteri_no = -1
and kayit_drm = 'A';

/* 2. Aşağıdaki sorgu kriterlere uyan bir kayıt bulamazsa boş bir satır getirecektir*/
select sum(tahsilat_ttr)
into deger2
from tablo2
where musteri_no = -1
and kayit_drm = 'A';

/* 3. Aşağıdaki sorgu kriterlere uyan bir kayıt bulamazsa 0(sıfır) değerini getirecektir*/
select nvl(sum(tahsilat_ttr),0)
into deger3
from tablo3
where musteri_no = -1
and kayit_drm = 'A';


Burada 2. olasılıkta elde edilen değerin NULL olmasına dikkat edilmeli.
Örneğin burada elde edilen tutarı bir başka tutar ile toplayacak olursak,
2. değer NULL olduğu için toplamın sonucu da NULL olacaktır.

Sonuc := deger2 + deger3;

Bu durumda 3. sorgu doğru değer döndürse de 2. sorgu 3.den dönen değeri NULL a dönüştürmüş
ve hiç tutar yokmuş gibi NULL değer dönmüş olacaktır.

Hiç yorum yok: