本文主要是介绍SQLCODE=-419, SQLSTATE=42911,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
项目场景:
DB2报错:SQLCODE=-419, SQLSTATE=42911
问题描述:
运行程序时,提示SQLCODE=-419, SQLSTATE=42911
select cash_flow / nvl(CASHFLOW_DISCOUNT,1) from 表A
原因分析:
翻阅资料后发现,十进制除法运算无效。
在DB2除法中,被除数A / 除数B,两个字段的字段类型有小数点的差异,除数B的精度大于A时,就会报错。
cash_flow的字段类型为decimal(30,15),cashflow_discount的字段类型为decimal(25,20),除数的小数点精度20大于了被除数的15
解决方案:
1、直接修改两个字段的字段类型,B的精度小于A。
2、用cast关键字把除数的精度修改。
select cash_flow / cast(nvl(CASHFLOW_DISCOUNT,1) as decimal(25,15)) from 表A
这篇关于SQLCODE=-419, SQLSTATE=42911的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!