DB2中的十进制溢出

时间:2016-04-28 14:44:19

标签: db2 cobol mainframe

我正在DB2V10中执行以下SQL。

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 OVERFLOW错误。

我不明白为什么我在这里得到十进制溢出。有人可以解释我!

1 个答案:

答案 0 :(得分:1)

根据numeric result rulesSUM (ORD_QTY * IFNULL(SELL_AMT,0) * IFNULL(WGT_QTY,0))得到的精度为DECIMAL(15,4),其值可以保持10 11 范围。

同时,实际结果可能在10 10 * 10 9 * 10 7 的范围内,加起来10 26