2016-04-28 15 views
0

Ich mache die folgende SQL in DB2V10.Decimal Overflow in DB2

select 
    SUM (ORD_QTY * IFNULL(SELL_AMT,0) * IFNULL(WGT_QTY,0)) 
    INTO :WS-VAR FROM TABA with ur; 

ORD_QTY => INTEGER 
SELL_AMT => DECIMAL(13,4) 
WGT_QTY => DECIMAL(11,4) 
WS-VAR => PIC S9(13)V9(4) USAGE COMP-3. 

Ich bin 802 DECIMAL OVERFLOW Fehler.

Ich verstehe nicht, warum genau hier Dezimalüberlauf bekommen. Kann mir bitte jemand erklären?

+1

Hier ist ein weiterer Link: https://www.ibm.com/support/knowledgecenter/SSEPEK_10.0.0/com.ibm.db2z10.doc.codes/src/tpc/p802.dita. Es ist sehr einfach, Sie haben eine Zahl berechnet, die zu groß ist. –

Antwort

1

Gemäß den numeric result rules, die resultierende Genauigkeit der SUM (ORD_QTY * IFNULL(SELL_AMT,0) * IFNULL(WGT_QTY,0))DECIMAL(15,4) ist, die einen Wert von bis zu dem 10 Bereich halten können.

Zur gleichen Zeit, das aktuelle Ergebnis im Bereich von bis zu 10 * 10 * 10 , die -10 aufaddiert werden könnte.