2016-04-28 21 views
0

私はDB2V10で以下のSQLを実行しています。DB2の10進数オーバーフロー

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. 

私は802 DECIMALオーバーフローエラーを取得しています。

私はここで十進数のオーバーフローが発生する理由を正確に理解できません。誰かが私を説明することができます!

+1

別のリンクは次のとおりです。https://www.ibm.com/support/knowledgecenter/SSEPEK_10.0.0/com.ibm.db2z10.doc.codes/src/tpc/p802.ditaそれは非常に簡単です、あなたは大きすぎる数を計算しました。 –

答えて

1

numeric result rulesによれば、SUM (ORD_QTY * IFNULL(SELL_AMT,0) * IFNULL(WGT_QTY,0))の結果として得られる精度は10 範囲までの値を保持することができDECIMAL(15,4)、です。

同時に、実際の結果が10 に加算最大10 の範囲* 10 * 10 、であってもよいです。