ORA-00036:配置toplink以使用绑定变量后,超出了递归SQL级别的最大数量(50)

时间:2011-05-20 09:35:27

标签: sql oracle triggers toplink

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

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

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

我的问题是:为什么只在我添加bind-variable设置后才显示此错误?我可以做些什么来使它能够使用绑定变量,而无需更改糟糕的代码?

1 个答案:

答案 0 :(得分:2)

“使用变异触发器问题的变通方法”

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

另一方面,在PL / SQL中使用逻辑通常意味着问题不会是绑定变量,因为您需要在PL / SQL中花费大量精力来不使用绑定。

在这种情况下,我会说你的时间花在寻找/替换任何变异表变通方法上,而不是绑定变量问题。