Home >Database >Mysql Tutorial >Oracle报ORA

Oracle报ORA

WBOY
WBOYOriginal
2016-06-07 15:12:451172browse

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入 EBS运行请求报错,ORA-01722.Oracle关于1722错误的描述是这样的:ORA-01722: invalid number(无效数字)。 刚开始排查SQL语句是否有问题,发现同样的SQL语句在PL/SQL dev中执行不会报错。 报ORA-01

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入

  EBS运行请求报错,ORA-01722.Oracle关于1722错误的描述是这样的:ORA-01722: invalid number(无效数字)。

  刚开始排查SQL语句是否有问题,发现同样的SQL语句在PL/SQL dev中执行不会报错。

  报ORA-01722这个错误,一般来说,是由于试图将字符串转换为数字的时候失败,具体的原因在于字符串中可能含有不是数字的字符。

  以下总结出两点,以后如果有发现这一错误,请从这两方面排查。

  如果发生ORA-01722错误,可能的原因有两种:

  1)执行的sql语句中包含显示或者隐式的类型转换,将字符串转换到数字类型的时候失败,字符内容包含非数字字符。解决方法:检查SQL语句是否包含对字段类型的转换。

  2)将一个字符(varchar2)字段绑定(DefineByPos)到数字(number)类型,从而在取结果时,转换失败。解决方法:检查绑定变量和对应的字段是否顺序对应,数据类型对应。

  总结:根本原因是oracle隐式类型转换,是由于字符类型的字段与数字变量进行条件查询时,oracle会自动将字符的字段或者是变量自动转换为数字型,而当字段含有字符时,也就是to_number函数发生异常的时候会报ORA-01722: 无效数字错误。

Oracle报ORA

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn