2008-12-08 83 views
2

我将Delphi 6应用程序移植到Delphi 2007,并使用BDE连接到Oracle 9i数据库的 。当我执行存储过程的数值溢出异常ORA-01426:执行存储过程时的数值溢出异常

:我正在一个

ORA-01426。这是随机发生的,如果我通过具有相同参数 的应用程序重新运行存储过程,则不会发生异常。

旧的Delphi 6应用程序工作得很好。

想法任何人?

+0

你的问题没有足够的细节。你能显示存储过程的源代码吗?错误来自存储过程内部,还是您调用它时?你可以从行号Oracle报告中看出来。 – 2008-12-09 02:24:53

+0

存储过程相当复杂,我不认为它导致问题(这就是为什么我没有使用Oracle标记)。当我运行该应用程序时,它通过抛出ORA-01426:数值溢出异常随机中断。如果我重新运行应用程序或手动执行存储的过程,错误不会发生。 – user9977 2008-12-09 20:00:43

+0

您是否尝试使用BDE端的SQL监视器跟踪调用?您是否尝试激活Oracle跟踪以查看实际发送给Oracle的内容? – 2011-07-05 21:34:11

回答

2

显示的代码示例,可以使这更容易,但这里有一对夫妇的预感:

  1. 从其他来源(如Excel)不具有明确的数据类型来的数据?混合或不明确的数据可能导致BDE将错误的数据类型分配给与数据库字段不兼容的字段。

  2. 可能是数字格式问题(某些以美国为中心的组件无法正确处理本地化)。您的本地化不是英语(美国)吗?是吗,将它改为英语(美国)是否解决了这个问题?

如果这些完全错过,更多的细节可能会有所帮助。

0

该应用程序的D6版本是否使用相同版本的BDE,Oracle和数据库?如果是这样,那么它可能是关于传递数据(内容或机制)的东西。

不知道这些数据是什么,也不知道它们是如何传递的,这使诊断非常困难。