我有一个使用Toplink进行持久化和Oracle数据库的应用程序.最近我遇到了性能问题,特别是在db / query级别.我在一堆触发器和存储过程中有很大的逻辑,写得很糟,有变异触发器问题的变通方法.该应用程序现已投入生产几年,并将此代码重写为最后一个解决方案,考虑到获得批准新版本和其他更高优先级的官僚作风.所以我正在寻找快速解决方案.
提高性能的一个解决方案是使用绑定变量.我的问题是,在toplink中的sessions.xml中添加了bind-all-variables和cache-all-statements,在某个UI上触发了糟糕的代码,并且在进行此配置更改之前工作正常,我收到此错误:
ORA-00036:超出了最大递归SQL级别数(50)
我的问题是:为什么只在我添加bind-variable设置后才显示此错误?我可以做些什么来使它与绑定变量一起使用,而不改变糟糕的代码?
最佳答案 “有变异触发问题的变通方法”
这听起来很可怕,因为大多数这些变通方法都围绕着自治事务,这些事务(a)不能很好地工作,(b)可能算作递归SQL.
另一方面,在PL / SQL中使用逻辑通常意味着问题不会是绑定变量,因为您需要在PL / SQL中花费大量精力来不使用绑定.
在这种情况下,我会说你的时间最好花在寻址/替换任何变异表变通方法上,而不是绑定变量问题.