Oracle OPEN-FOR-USING语句绑定问题

Oracle OPEN-FOR-USING语句绑定问题,oracle,plsql,oracle10g,ora-03114,Oracle,Plsql,Oracle10g,Ora 03114,我在ORACLE函数中有一个游标,我正在使用函数的参数动态生成该游标 我定义光标的文本,在某些情况下,我包括以下语句: sql_stmt := sql_stmt || 'AND MOD ( LOG_ID, :logsetmax ) = :logset '; 我使用ORACLE open-FOR-using语句打开游标并传入参数(例如:logsetmax设置为3,logset设置为0) 当我的程序包含上面的约束时,我的程序挂起,我得到ORA-03113和ORA-03114错误 ORA

我在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 || ' ';

ORA-03113:通信通道上的文件结束错误是一个一般错误。连接时的ORA-03113错误表明连接已建立,但后来丢失,如超时

ORA-03113错误有许多可能的原因

ORA-3113可在以下任何情况下发出信号:

  • 机器崩溃了
  • 服务器进程在O/S级别被终止
  • 网络问题
  • 服务器上的Oracle内部错误/中止
  • 客户端错误地处理多个连接
  • 等等。。很多可能的原因
行动:有一次沟通 需要进一步修改的错误 调查首先,检查 网络问题和回顾 SQL*Net设置。此外,请查看 alert.log文件中是否存在任何错误。 最后,测试看看 服务器进程已停止,并且 跟踪文件是在失败时生成的 时间


您是否尝试过在不使用游标和动态SQL的情况下手动运行查询。它是否会导致类似的问题,如果我将值硬编码到问题约束中,它会正常工作,问题似乎在于绑定值。