情况描述
在查询一条数据时,报了OCI-22053:溢出错误,报错语法是简单的一个查询语法,例如 select * from table_name,没有任何其他的关联和条件
问题排查
通过网络上的经验总结,多半原因是由于number字段的精度问题导致的,建议使用round()函数进行截取。
本次情况发现确实有一个字段是number字段,且用于存储时间戳信息,但是正常我们定义number字段的时候,通常会定义number字段的长度,但是该表并未制定number字段的长度,经测试,发现有的会报错,有的不会,直接通过plsql查询都不会报错,但是通过程序查询就会报错。
通过会报错的数据行,查询的时候去掉该字段,果然程序正常了。而且该字段为空的时候,也会报错,有些有数据的也会报错(长度为10),后由于业务情况不同,我们直接把该字段排除掉,不做结果返回,问题解决。
问题原因总结
1.由于number字段长度未指定或超长导致的精度溢出,建议指定number字段长度
以上情况只是本人遇到的情况总结,总结原因肯定不全面,仅供参考