Java JDBC вызов функции Oracle 10 "неверный идентификатор" - PullRequest
2 голосов
/ 03 февраля 2012

У меня проблема, с которой я раньше не сталкивался: в базе данных есть сохраненная функция: CC_PROC, которая принимает две записи даты и возвращает таблицу.Другими словами, чтобы вызвать его, вы набираете:

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.Есть идеи?

Спасибо!

1 Ответ

1 голос
/ 03 февраля 2012

ага, нашел ответ:

Пользователь-оракул был SALESOWN, поэтому исправление было:

PreparedStatement preparedStatement = connection.prepareStatement(
        "SELECT * FROM (TABLE ( SALESOWN.CC_PROC( ? , ? )))");

Хлоп. Я не хочу признавать количество времени, которое потребовалось, чтобы понять это.

Очевидно, что SQLPlus и NetBeans пытаются немного помочь ...

Спасибо за помощь, ребята!

...