2012-02-02 4 views
2

У меня возникла проблема, с которой я не сталкивался раньше: в базе данных хранится функция: 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. Есть идеи?

Спасибо!

+1

Вы пытались выполнить то же самое из sqlplus с жесткими вводами кода? – kosa

+0

Да; prepareStatement ("SELECT * FROM (ТАБЛИЦА (CC_PROC (DATE '2012-01-01', DATE '2012-01-15')))"); После выполнения выдается такая же ошибка. :/ – Decker

+0

Это означает, что что-то изменилось, может быть в базе данных (или) вашего типа ввода. – kosa

ответ

1

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

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

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

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

Видимо SQLPlus и NetBeans делают попытку помочь немного ...

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

+1

Лучше сделать это только один раз, если вы сможете: http://stackoverflow.com/questions/2353594/default-schema-in-oracle-connection-url. 'ALTER SESSION SET CURRENT_SCHEMA = SALESOWN' –

Смежные вопросы