4

我有一个使用 Toplink 进行持久性和 Oracle 数据库的应用程序。最近我遇到了性能问题,尤其是在 db/query 级别。我在一堆触发器和存储过程中有一大段逻辑,写得不好,有变异触发器问题的解决方法。该应用程序已经投入生产几年了,重写此代码是最后的解决方案,考虑到获得新版本批准和其他更高优先级的官僚主义。所以我正在寻找一个快速修复。

提高性能的一种解决方案是使用绑定变量。我的问题是,在 toplink 的 session.xml 中添加 bind-all-variables 和 cache-all-statements 之后,在某个 UI 上,触发了糟糕的代码,并且在进行此配置更改之前工作得很好,我收到了这个错误:

ORA-00036: 超出最大递归 SQL 级别数 (50)

我的问题是:为什么仅在添加绑定变量设置后才显示此错误?在不更改糟糕代码的情况下,我能做些什么让它与绑定变量一起工作?

4

1 回答 1

2

“变异触发问题的解决方法”

这听起来很可怕,因为大多数变通方法都围绕着自主事务展开,这些事务 (a) 不能很好地工作,并且 (b) 可能算作递归 SQL。

另一方面,在 PL/SQL 中具有逻辑通常意味着问题不会是绑定变量,因为您需要在 PL/SQL 中付出很大的努力才能不使用绑定。

在这种情况下,我想说您最好将时间花在解决/替换任何具有坚实基础的变异表解决方法上,而不是绑定变量问题。

于 2011-05-20T22:39:11.107 回答