0

我们刚刚从 oracle 9i 升级到 10g,我使用 9i 客户端而不是 10g 的数据库查询。查询中没有任何变化。我收到以下错误:

java.sql.SQLException: ORA-01036: illegal variable name/number

不太确定发生了什么。为什么不再运行了。它只是一个连接大约 3 或 4 个表的选择语句。我确保使用 setInt 传递变量(这是我正在使用的数字)。在区分要加入的表时,我发现唯一不同的是,在一张表上,我要加入的列设置为一张表上的数字和另一张表上的 Number(12)。这有什么不同吗?查询仍在 TOAD 和 SQL 导航器中运行...

4

2 回答 2

0

2个想法浮现在脑海:

  1. 确保您使用的是正确版本的 jdbc 驱动程序。由于您已经说过查询在 TOAD 等中有效,因此这很可能是您的问题。
  2. 确保您没有在查询中使用任何 ORACLE 关键字作为列别名等

此外,根据经验,如果您的数据库很大/很忙,那么在您的 10g 环境稳定之前,您还有很长的路要走。我的建议:

  1. 尽可能多地了解统计信息
  2. 阅读生存指南(网上有很多)
  3. 注意重新计算状态的内置作业。我们在上线 12 天后受到重创,因为统计数据更改破坏了关键查询性能。我们的测试不允许进行 12 天的稳定性测试。
  4. 如果您还没有,请注意绑定变量窥视
于 2010-06-25T02:55:53.753 回答
0

问题在于对准备好的语句的以下方法调用:

ps.setEscapeProcessing(false);

删除了它,现在它工作正常。不要认为这与 oracle 10g 驱动程序兼容。感谢大家的帮助。

于 2010-06-25T14:17:58.473 回答