Создайте и выберите оператор, используя оператор 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.
Смотрите этот ответ для получения дополнительной информации.