您当前的位置: 首页 > 数据库教程 > Oracle教程 > ORA-01455报错的问题探究

ORA-01455报错的问题探究

作者:不详 来源:网络 发布时间: 2014-08-25 17:27 点击:
昨天同事说有个应用执行某个特殊操作时会报:ORA-01455: converting column overflows integer datatype 网上包括MOS上对1455报错介绍更多的是在做exp导出时可能出现这个问题。 1087122.1介绍: 当创建使用初始值超过10位的序列时,可能会出现如下问题: ORA-01455: co

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类型的长度,也就是说字段类型和变量类型一定要对应。
分享到:
本文"ORA-01455报错的问题探究"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4