Oracle OPEN-FOR-USING语句绑定问题
我在ORACLE函数中有一个游标,我正在使用函数的参数动态生成该游标 我定义光标的文本,在某些情况下,我包括以下语句: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
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的情况下手动运行查询。它是否会导致类似的问题,如果我将值硬编码到问题约束中,它会正常工作,问题似乎在于绑定值。