У меня возникла проблема, с которой я не сталкивался раньше: в базе данных хранится функция: CC_PROC, которая принимает две записи даты и возвращает таблицу. Другими словами, назвать его, вы набираете:Java JDBC вызов функции Oracle 10 «недопустимый идентификатор»
SELECT * FROM (TABLE(CC_PROC(DATE '2012-01-01', DATE '2012-01-15')));
Это, кажется, прекрасно работают в SQLPlus и NetBeans, и вышеуказанная линия была, по-видимому была в использовании в течение некоторого времени.
В любом случае, вызывая его из java с помощью подготовленного оператора, я получаю: «CC_PROC»: недопустимый идентификатор вызова executeQuery.
Это с:
PreparedStatement preparedStatement =
connection.prepareStatement("SELECT * FROM (TABLE (CC_PROC(? , ?)))");
preparedStatement.setDate(1,firstDate);
preparedStatement.setDate(2,secondDate);
resultSet = preparedStatement.executeQuery();
Я чувствую, что, может быть, это очевидно, и мой ограниченный опыт использования JDBC непосредственно вместо Hibernate бросает меня. Я бы не хотел перекодировать содержимое CC_PROC в бизнес-логике Java. Есть идеи?
Спасибо!
Вы пытались выполнить то же самое из sqlplus с жесткими вводами кода? – kosa
Да; prepareStatement ("SELECT * FROM (ТАБЛИЦА (CC_PROC (DATE '2012-01-01', DATE '2012-01-15')))"); После выполнения выдается такая же ошибка. :/ – Decker
Это означает, что что-то изменилось, может быть в базе данных (или) вашего типа ввода. – kosa