记一次生产问题解决 ORA-01438: value larger than specified precision allowed for this column

本贴最后更新于 1606 天前,其中的信息可能已经时移世易

一、问题描述


java.sql.SQLDataException: ORA-01438: value larger than specified precision allowed for this column

二、问题百度

1、错误说明

ORA-01438,发生此错误的原因在于我们插入的数据长度超过了字段指定的字段长度,比如插入的数据为 102329204123.33829492,小数点前长度为 12,小数点后长度为 8,若字段字符类型指定为 Number(19,12),那么在插入时则就会报错。

2、oralce 的 Number()规则

首先说下 oralce 的 Number()在插入数据时遵循的规则:

设字段字符类型为 Number(a,b),其中 a>b,在插入数据时,整数部分长度最大不能超过 a-b,小数部分长度如果大于 b,则截取 b 长度的小数存入数据库,其余的将被舍弃。

如刚才我们所举的例子,19-12=7,只能存入整数位长度小于或等于 7 的数据,大于 7 时则就会报错。

3、解决办法

故解决办法就是修改 Number(a,b)中的 a,使其保障存入数据的整数位长度小于 a 即可。

三、问题实例

1、问题截图

image.png

image.png

image.png

2、问题描述

总保额实际传入 13 位
测试环境数据库 15 位
生产环境数据库 11 位
生产环境字段长度不够

3、问题解决

修改生产环境数据库该字段长度

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3187 引用 • 8213 回帖
  • Oracle

    Oracle(甲骨文)公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989 年正式进入中国市场。2013 年,甲骨文已超越 IBM,成为继 Microsoft 后全球第二大软件公司。

    105 引用 • 127 回帖 • 382 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...