2011-03-23 226 views
1

我们最近升级了一个我们维护使用Oracle 11g的应用程序(.NET 2.0)。该应用程序使用MS企业库2.0。我们发现,当调用database.ExecuteNonQuery(Oracle.DataAccess.Client.OracleCommand)方法时,它会在存储过程期望一个参数为数字但收到一个字符串时发生炸弹。这在升级之前没有发生。如果我将该参数强制转换为Int,则不会收到错误。有没有人遇到过这个问题?升级过程中可能会漏掉一些东西吗?无论我们打到11g数据库还是10g数据库,都会出现此问题。Oracle 11g存储过程参数问题

如果这个问题含糊不清,我很抱歉。

感谢您的帮助。

编辑:我忽略了提及,当调用ExecuteDataReader(处理数据类型的隐式转换)时不会发生同样的问题。

+0

当你说“炸弹”时,它是什么?甲骨文? 。净? MS企业库?什么是错误消息,错误号码,调用堆栈等? – 2011-04-04 07:15:14

+0

收到Oracle“无效输入字符串[]”错误。最后,我们搜索代码并纠正任何参数类型不匹配。 – 2011-04-13 16:54:13

回答

2

你真的应该改变你的代码,以便将正确的数据类型传递给存储过程。

听起来像他们最终执行此操作。

+0

改变代码是一项重大任务,所以这是最后的手段。另外,它似乎并不一致。在一些方法中,不匹配不会导致错误,但在其他方法中,它会发生错误。另外,如果它正在执行db.ExecuteDataReader,它似乎没有问题。任何其他想法? – 2011-03-25 13:41:12