2013-09-25 4 views
0

в коде ниже метод ResultSet.next() возвращает ложьпочему ResultSet.next() возвращают нуль

String sql = "{?= call fun_consolidate_retrieve_vector_receipt_payment_details(?,?,?,?,?,?)}"; 
     callableStatement = con.prepareCall(sql); 
     callableStatement = con.prepareCall(" {? = call fun_retrieve_vector_receipt_payment_details(?,?,?,?,?,?)}"); 
     callableStatement.registerOutParameter(1, Types.OTHER); 
     callableStatement.setString(2, "PAYMENT"); 
     callableStatement.setInt(3, 47); 
     callableStatement.setString(4, "24-05-2013"); 
     callableStatement.setString(5, "24-09-2013"); 
     callableStatement.setString(6, "Y"); 
     callableStatement.setObject(7, resultSet); 
     con.setAutoCommit(false); 
     callableStatement.execute(); 

     resultSet = (ResultSet) callableStatement.getObject(1); 
     boolean next = resultSet.next(); 

Почему это так ??? если я вызываю одну и ту же хранимую процедуру из своей базы данных, она выводит 2 строки вывода (с тем же вводом, что и в java-коде)

+0

Возможно, вы захотите взглянуть на эти вызовы 'setString', где вы передаете строки даты: вы уверены, что даты обрабатываются так, как вы ожидаете? – ruakh

+0

Я думаю, эта ссылка поможет http://docs.oracle.com/cd/E17952_01/refman-5.5-en/connector-j-usagenotes-statements-callable.html – ahmedalkaff

+0

Пожалуйста, покажите нам источник функции 'fun_consolidate_retrieve_vector_receipt_payment_details' –

ответ

1

Ваш заголовок выражает ваше замешательство. ResultSet.next() возвращает boolean, не все, что может быть нулевым. Вы должны называть его до getObject(), а не потом.

+0

, что следующая ложь .... почему нет данных внутри набора результатов – user2291144

+0

Поскольку неизвестная хранимая процедура, которую вы вызывали, не выбирала ни одной строки. Вы также должны рассмотреть возможность определения SQL, который вызывает его один раз, а не дважды. – EJP

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