db2 8.2中DECIMAL乘法运算的精度问题.
下记SQL语句发生了算术溢出.是什么原因呢?
select DECIMAL(1,31,20) * DECIMAL(1,8,4) as t1,
DECIMAL(1,31,20) * DECIMAL(1,8,4) * DECIMAL(1,8,4) as t2,
DECIMAL(1,31,20) * DECIMAL(1,8,4) * DECIMAL(1,8,4) * DECIMAL(1,8,4) as t3
from SYSIBM.SYSDUMMY1 ;
------------------------------------------------------------------------
T1 T2 T3
--------------------------------- --------------------------------- ---------------------------------
SQL0802N 发生算术溢出或其他算术异常。 SQLSTATE=22003
我检查了一下他的数据类型,搞不懂他的精度为什么会这样?
-------------------------------输入的命令-------------------------------
DESCRIBE
select DECIMAL(1,31,20) * DECIMAL(1,8,4) as t1,
DECIMAL(1,31,20) * DECIMAL(1,8,4) * DECIMAL(1,8,4) as t2,
DECIMAL(1,31,20) * DECIMAL(1,8,4) * DECIMAL(1,8,4) * DECIMAL(1,8,4) as t3
from SYSIBM.SYSDUMMY1
------------------------------------------------------------------------
SQLDA 信息
sqldaid : SQLDA sqldabc: 896 sqln: 20 sqld: 3
列信息
sqltype sqllen sqlname.data sqlname.length
-------------------- ------ ------------------------------ --------------
484 DECIMAL 31,24 T1 2
484 DECIMAL 31,28 T2 2
484 DECIMAL 31,31 T3 2