firebird stored proc. de null değeri kontrole etmek

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
kadioglu
Üye
Mesajlar: 34
Kayıt: 22 Mar 2004 06:15

firebird stored proc. de null değeri kontrole etmek

Mesaj gönderen kadioglu »

merhabalar ;
firebird de bir stored proc. yazdım..
programımdan sorunsuz bir şekilde çalıştırıyoerum..

prosedürle yaptığım işlem...
mno ya göre bir tablodqaki kayıt toplamını diğer tablodan çıkarmak..
normalde işlemi yapıyr ancak..
o tabloda kayıt olmazsa (ya da null olursa gelen sonuc)
çıkarma işlemini yapmıyor....
bende eğer sonuc null ise 0 yapmak istiyorum ama yapamadım ..

update MUSTERI
set
ACIKBAKIYE = ((select sum(tutar) from acikhesap where mno=:mno)- (select sum(tutar) from odeme where mno=:mno))
where
MNO = :MNO;

suspend;
end


şöyle bir mantık düşündüm..
toplamodeme=(select sum(tutar) from odeme where mno=:mno))
if toplamodeme=null then
toplamodeme=0;


update MUSTERI
set
ACIKBAKIYE = ((select sum(tutar) from acikhesap where mno=:mno)- toplamodeme;
where
MNO = :MNO;

suspend;
end


ama bu kodu da çalıştıramadım..
error parser diyor..
sorunumu halledebileceğim bir kod ya da mantık...
:?:
ilgilenen arkadaşlara tşkler....
...ROKA...
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

COALESCE kullanabilirsin.

(CASE WHEN ELSE END) de kullanabilirsin.

Kod: Tümünü seç

update MUSTERI 
set 
ACIKBAKIYE = (COALESCE(select sum(tutar) from acikhesap where mno=:mno), 0)- COALESCE(select sum(tutar) from odeme where mno=:mno), 0) 
where 
MNO = :MNO; 
İyi çalışmalar.
kadioglu
Üye
Mesajlar: 34
Kayıt: 22 Mar 2004 06:15

Mesaj gönderen kadioglu »

tşkler cevap için..
yazdım ama
parsing error diyor..
ACIKBAKIYE = (COALESCE(select sum(tutar) from acikhesap where mno=:mno), 0)- COALESCE(select sum(tutar) from odeme where mno=:mno), 0)
büyüttüğüm. sum ifadesinde imleç...
...ROKA...
kadioglu
Üye
Mesajlar: 34
Kayıt: 22 Mar 2004 06:15

Mesaj gönderen kadioglu »

aşağıdaki şekilde yazınca
düzeldi...

çalıştı
begin
/* Procedure Text */



update MUSTERI
set
ACIKBAKIYE = (select COALESCE(sum(tutar),0) from acikhesap where mno=:mno)- (select COALESCE(sum(tutar),0) from odeme where mno=:mno)
where
MNO = :MNO;
suspend;
end

kolay gelsin.... :)
...ROKA...
Cevapla