関数の引数を使用して動的に生成している ORACLE 関数にカーソルがあります。
カーソルのテキストを定義し、場合によっては次のステートメントを含めます。
sql_stmt := sql_stmt || 'AND MOD ( LOG_ID, :logsetmax ) = :logset ';
カーソルを開き、ORACLE OPEN-FOR-USING ステートメントを使用して引数を渡します (たとえば、:logsetmax を 3 に設定し、:logset を 0 に設定します)。
プログラムに上記の制約が含まれていると、プログラムがハングし、ORA-03113 および ORA-03114 エラーが発生します。
ORACLE は、(USING で渡された):logsetmax のカーソル引数をカーソル宣言の MOD 関数にバインドすることを妨げており、この予測できない動作を引き起こしていますか?
私のエラーは、ORACLE 接続のタイムアウトを引き起こしているバインドされていない引数によるゼロ除算によるものと思われますか?
どんな提案でも大歓迎です。
アップデート
実用的な解決策として、SQL を修正してカーソル バインドからこれらの制約を削除し、次のように SQL にハード コードしました。
sql_stmt := sql_stmt || 'AND MOD ( LOG_ID, ' || p_logsetmax || ' ) = ' || p_logset || ' ';