Создайте и выберите оператор, используя оператор jdbc

У меня есть требование создать временную таблицу и выбрать одну временную таблицу для базы данных Netezza в одной сессии.

Таблицы: abc, def

String query = create temp table MyTemp as select * from abc join def; select col1, col2 from MyTemp;";
boolean result = statement.execute(query);
while(true) {
     if(result) {
       ResultSet rs = statements.getResultSet();
       while(rs.next()) {
        //Access result set.
       }
     } else {
        int count = statement.getUpdateCount(); -- CREATE statement output
         if(count == -1) {
          break;
         }
        result = statement.getMoreResults();
     }
}

Я ожидал получить updatecount, а затем набор результатов из оператора, поскольку я выполняю команду CREATE temp, за которой следует оператор SELECT.

Я получаю результат как истину для первого оператора (вывод оператора CREATE). Но позже, когда выполняется Statement.getMoreResults, я получаю false. Но, согласно документации, Statement.getMoreResults возвращает true для вывода ResultSet.

У меня есть альтернативное решение разделения строки с помощью точки с запятой и выполнения отдельных запросов с помощью одного и того же оператора. Но я хочу знать, почему вышеуказанное решение не работает.

1 ответ

Я не уверен, поддерживает ли его драйвер JDBC Netezza, или он будет работать даже с вашими примерами запросов и существующим кодом, но похоже, что вам, возможно, придется пройти allowMultiQueries=true как вариант для вашего URL JDBC.

Смотрите этот ответ для получения дополнительной информации.

Другие вопросы по тегам