Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Что в данном случае означает исключение?


Автор: troika 20.7.2011, 14:15
Добрый день. Хочу получить данные из базы Oracle от хранимой процедуры, возвращающей курсор следующим образом:
Код

cstmt = oraCon.prepareCall("{? = call procedure1(?,?)}");
cstmt.registerOutParameter(1, OracleTypes.CURSOR);
cstmt.setString(2, account);
cstmt.setDate(3, dat);
cstmt.executeQuery();        
resultSet = (ResultSet) cstmt.getObject(1);
while (resultSet.next())
{
//запись полученных данных
}

if(resultSet.wasNull()) //вот тут вылетает исключение ora-17024 no data read
{    

}


При вызове функции .wasNull() вылетает исключение ora-17024 no data read.
Во-первых, почему-то никогда не возвращаются хоть какие-то результаты, хотя до вызова функции wasNull() никаких ошибок нет. Данные в базе имеются и процедура на самом сервере работает правильно.
Во-вторых, почему при вызове функции wasNull() вылетает это исключение и что оно означает? Что вызов прошел нормально и просто нет данных в курсоре или что-то прошло не так? Или я может не правильно понял назначение функции wasNull?
Для меня важнее узнать почему не возвращаются данные, но не знаю связано ли как-то это с ошибкой. Просто без вызова wasNull() никаких ошибок нет, но данные не идут.

P.S. Не знаю где лучше разместить тему, тут или в ветке про Oracle

Автор: AntonSaburov 20.7.2011, 15:11
Так Вы, сударь сначала добрались до конечной записи и прыгнули за нее - т.е. набор данных в виде ResultSet кончился.
И после этого идет попытка обратиться к колонке. Ну оно и падает.

Не могу гарантировать, что именно так, но очень похоже на то.

Автор: LSD 20.7.2011, 15:15
ResultSet.wasNull() можно вызывать только после того как был вызван один из getXXX() методов.

Автор: troika 20.7.2011, 15:25
Цитата(LSD @ 20.7.2011,  15:15)
ResultSet.wasNull() можно вызывать только после того как был вызван один из getXXX() методов.

Точно! Я же вызываю getObject(1) для CallableStatement, а не для ResultSet

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)