У меня есть oracle stored proc
, который нужно вызвать из моей программы Java. Я использовал CallableStatement
для передачи параметров хранимому процессу. Я использую тонкий драйвер oracle (настроенный на сервере веб-логики против соответствующей записи jndi). Этот хранимый proc не имеет никаких значений OUT. Этот сохраненный proc принимает числовое значение и делает много обновлений в базе данных на основе полученного значения.
Я получаю объект соединения, а затем вызываю этот сохраненный цикл proc (20 раз для передачи 20 номеров). Когда я напрямую вызываю этот хранимый процесс от клиента oracle, выполнение завершается через 2-3 секунды. Однако поведение не предсказуемо из моего java-кода. Некоторые из звонков занимают 30-40 секунд, чтобы завершить работу.
Я попытался использовать PreparedStatement
вместо CallableStatement
и мог видеть незначительное улучшение производительности (хотя поведение по-прежнему несовместимо).
- Хорошо ли в моем случае использовать
PreparedStatement
вместоCallableStatement
, учитывая, что у хранимогопрограммы нет каких-либо параметров OUT? - Есть ли причина, по которой
PreparedStatement
имеет некоторое усиление производительности по сравнению сCallableStatement
или это то, что я мог бы заметить неправильно? - Есть ли лучший способ решения этой проблемы производительности?