我在使用函数参数动态生成的 ORACLE 函数中有一个游标。
我定义了光标的文本,在某些情况下我包括以下语句:
sql_stmt := sql_stmt || 'AND MOD ( LOG_ID, :logsetmax ) = :logset ';
我使用 ORACLE OPEN-FOR-USING 语句打开游标并传递参数(例如,将 :logsetmax 设置为 3 和 :logset 设置为 0)。
当我的程序包含上面的约束时,我的程序挂起并且我得到 ORA-03113 和 ORA-03114 错误。
ORACLE 是否阻止我将 :logsetmax 的游标参数(使用 USING 传入)绑定到我的游标声明的 MOD 函数中并导致这种不可预测的行为?
我怀疑我的错误是由于非绑定参数除以零导致 ORACLE 连接超时?
任何建议将不胜感激。
更新
作为一个实用的解决方案,我修改了我的 SQL 以从游标绑定中删除这些约束,并将它们硬编码到 SQL 中,如下所示:
sql_stmt := sql_stmt || 'AND MOD ( LOG_ID, ' || p_logsetmax || ' ) = ' || p_logset || ' ';