У меня есть курсор в функции 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?
Любые предложения будут с благодарностью.
UPDATE
В качестве практического решения я пересмотрел свой SQL, чтобы удалить эти ограничения из привязки курсора, и жестко запрограммировал их в SQL следующим образом:
sql_stmt := sql_stmt || 'AND MOD ( LOG_ID, ' || p_logsetmax || ' ) = ' || p_logset || ' ';