stored procedurede bir sorun

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
Kullanıcı avatarı
şimal
Kıdemli Üye
Mesajlar: 516
Kayıt: 10 Kas 2003 09:36
Konum: ANKARA

stored procedurede bir sorun

Mesaj gönderen şimal »

UPDATE HEDIYE_CARI SET K_PUAN=K_PUAN+: DLR_SONUC where KART_NO=:ID;

DLR_SONUC, K_PUAN DOUBLE PRECISION tipinde
DLR_SONUC degiskeni K_PUAN üstüne ekleniyor. DLR_SONUC değişkenine bir bölme işlemi sonucu atandığı için ondalık bir sayı ise virgülden sonra birdolu basamak alıyor. Virgülden sonra sadece 2 basamak almasını tipini değiştirmeden nasıl sağlıyabilirim?
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

veritabanınızı bilmiyorum ama cast komutu tip donusumu amacli bir cok veritabanında aynı sekli ile vardir. Sanırım bu sekilde istediginiz olacaktır.

Kod: Tümünü seç

UPDATE HEDIYE_CARI SET K_PUAN=cast(K_PUAN+: DLR_SONUC as numeric(10,2) where KART_NO=:ID; 
Kullanıcı avatarı
şimal
Kıdemli Üye
Mesajlar: 516
Kayıt: 10 Kas 2003 09:36
Konum: ANKARA

Mesaj gönderen şimal »

Fahrettin Bey cok tesekkur ederim... Halletimistim ama mesaiden bi yarim saat once cozdugum icin foruma cvp yazma firsati bulamadim...
Cast komutuyla cozdum ancak ben su sekilde yapmistim:
DLR_SONUC=cast(DLR_SONUC, decimal(9,2))
UPDATE HEDIYE_CARI SET K_PUAN=K_PUAN+: DLR_SONUC where KART_NO=:ID;

numeric(10.2) ve decimal(9,2) birbirinden farkli midir?
birde sizin yazdiginiz sekliyle deniyecegim ptesi insallah...
Herkese kolay gelsin...
Cok tesekkurler
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

rica ederim...
numeric ile decimal farkli seyler degil. veritabanına gore birinde numeri digerinde decimal var oluyor olaiblir ya da her ikisi de var ve her ikisi de ayni isi yaptigi veritabanları da var... Yani tamamen ayni seyler....

veritabanınızı bilmiyorum ama bir cok veritabanı icin degisken kullanmadan yazdigim ornek seklide de calisacaktir.... benim kodda bir parantez unutmusum. Dogru hali sizin calisan cast komutu yazim bicimi ile birlikte soyle olmalı...

Kod: Tümünü seç

UPDATE HEDIYE_CARI SET K_PUAN=cast(K_PUAN+: DLR_SONUC , decimal(10,2)) where KART_NO=:ID; 
Cevapla