Пустой ResultSet после выполнения PreparedStatement - PullRequest
1 голос
/ 26 августа 2010

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

//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 в приложении ма?

Ответы [ 2 ]

0 голосов
/ 26 августа 2010

Я предполагаю, что TEST.getDevices () возвращает TYPE "TABLE OF" или 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";

Или вы можете попробовать поискать в Google что-то вроде "как сопоставить varray в Java из Oracle".

0 голосов
/ 26 августа 2010

Проверяли ли вы соединение с БД.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...