1 Son düzenleyen, konuka (10.04.2014 09:31:34)

Konu: int / bigint / Numeric(xx.xx)

Belki biliyorsunuz, başıma geldi, paylaşıyorum.
SQL SUM() gibi aggregate fonksiyonları kendi alanında (field) hesaplıyor galiba. SUM(alan1 x alan2) sonucu alan1e sığmıyorsa sonuç için otomatikman büyük alan seçmeyip arithmetic overflow hatası veriyor.

adet 0-2000 arası ve gram 0-3000 arası datayı 5-6 yıl için sorgulamak gerekti;
"Arithmetic overflow error converting expression to data type int." hata mesajı aldım.

hata mesajı:

SQL
SELECT SUM(paket_.adet*gram ) AS cfgram .....


SQL çözüm:

SQL
SUM(CAST(paket_.adet*gram AS bigint)) AS cfgram


VFP için çözüm: 

SQL
SUM(CAST(paket_.adet*gram AS numeric(18, 0)))

olmuyor: SELECT CAST(SUM(paket_.adet*gram ) as bigint) AS cfgram .....

önemli:
SQL tarafında bigint VFP tarafında VARTYP()="U" Unknown or variable does not exist olarak dönüyor,
yani çok büyük rakamları hallederken sıkıntılı !

akademik:
bigint: Integer (whole number) data from -2^63 (-9,223,372,036,854,775,808) through 2^63-1 (9,223,372,036,854,775,807). Storage size is 8 bytes.
int: Integer (whole number) data from -2^31 (-2,147,483,648) through 2^31 - 1 (2,147,483,647). Storage size is 4 bytes. The SQL-92 synonym for int is integer.

VFP9 SP2

2

Re: int / bigint / Numeric(xx.xx)

Tesekkurler.