2010-08-26 2 views
1

Когда я выполнить SQL запрос SELECT * FROM TABLE (TEST.getDevices()) в SQLDeveloper У меня есть около 200 строк, но когда я пытаюсь выполнить его в Java:Пустой ResultSet после выполнения PreparedStatement

//cut here 
String query = "SELECT * FROM TABLE (TEST.getDevices())"; 
PreparedStatement stmt = null; 
ResultSet rset = null; 
try { 
    stmt = oracleConnection.prepareStatement(query); 
    rset = stmt.executeQuery(); 
    rset.next(); 
    System.out.println(rset.getInt(1)); 
//cut here 

я получаю пустой ResultSet и так далее, за исключением бросается. Я попробовал запрос SELECT Count(*) a FROM TABLE (TEST.getDevices()) В SQLDeveloper результата 200, в Java приложение 0.

Что может быть причиной того, что получить пустой ResultSet в ма приложение?

+0

Права доступа к программе и базы данных? – Tobiasopdenbrouw

ответ

0

Вы проверили соединение с БД.

+0

Да, но все в порядке. Проблема решена - это была ошибка в базе данных, приложение запрашивало в контексте пользователя, у которого не было прав читать это. – Zygmunt

0

Я предполагаю, что TEST.getDevices() возвращает ТИП «ТАБЛИЦА» или getDevices - ТРУБОПРОВОДНАЯ ФУНКЦИЯ? Если это правда, то вы можете попробовать этот трюк:

CREATE VIEW VIEW_DEVICES AS SELECT * FROM TABLE(TEST.getDevices()); 

Чем Шоуда работать с Java и SQLDeveloper:

DESC VIEW_DEVICES; 

или выберите заявление

SELECT * FROM VIEW_DEVICES; 

Вы можете заменить вам запрос на:

String query = "SELECT * FROM VIEW_DEVICES"; 

Или вы c попробуйте найти в google что-то вроде «как отобразить varray в java от oracle».

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