ORA-01455报错的问题探究
来源: 阅读:1009 次 日期:2014-10-17 10:48:30
温馨提示: 小编为您整理了“ORA-01455报错的问题探究”,方便广大网友查阅!

昨天同事说有个应用执行某个特殊操作时会报:ORA-01455: converting column overflows integer datatype

网上包括MOS上对1455报错介绍更多的是在做exp导出时可能出现这个问题。

1087122.1介绍:

“当创建使用初始值超过10位的序列时,可能会出现如下问题:

ORA-01455: converting column overflows Integer datatype

ORA-06502 PL/SQL: Numeric or value error: number precision too large

APP-01564: Oracle error 1455 in fdsgsv

ORA-01455: converting column overflows integer datatype.

arzira: Error from fdsnxt:2

APP-AR-11526: ORA-01403: no data found

No errors but the document number generated is 0

产生的原因可能是:

1、通常在C代码中使用定长来创建序列号,最大值允许10位。有时可能会替换一些代码,来调用PLSQL处理超过10位的序列号,可并没有全部替换。

2、展示编号的工作台仅允许15位。

解决方案:

一旦已经使用了序列号,那么就不能修改初始值了。唯一的方法就是创建一个新的序列号,取一个耕地的初始值,然后重新赋予到正使用旧序列号的范畴。如果使用的是无间隔的序列,重新初始化序列号可能会带来更复杂的事情。”

针对这个报错,仔细询问了下,是执行SELECT语句,带一个特殊的过滤条件时会报这个错误,其它的过滤条件则不会报错,说明很可能是这个特殊过滤条件对应的记录中有些小问题,经过同事的排查,确定是其中一条记录的某个字段,Oracle中定义的是NUMBER(10)类型,实际值是8开头的10位数,但应用程序中使用的getInt()获取,Integer的取值是-2^15-2^15-1,显然该值超过了Integer允许的最大值,因此在执行SELECT时会报错,将getInt()改为getDouble()即可。

总结:

根据报错的提示内容:converting column overflows integer datatype,可以检查是否有表定义的字段类型和程序中定义的变量类型不匹配,导致精度长度无法对应,造成转换过程中超过INTEGER类型的长度,也就是说字段类型和变量类型一定要对应。

更多信息请查看IT技术专栏

更多信息请查看数据库
手机网站地址:ORA-01455报错的问题探究
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map