Q1: у меня есть цикл, внутри которого есть оператор выбора.Теперь я хочу накапливать все эти строки из оператора select в ResultSet, а затем использовать его для других целей вне цикла.Как мне этого добиться?
while(rs.next()){
//some code..
String sql2 = "select cast(multiset(select * from table(sys.dbms_debug_vc2coll("+ar.toString().replace("[","").replace("]","")+"))) as UDT),"+rn+" as test from dual"; //returns a user defined datatype which is defined in my db schema
PreparedStatement ps2=conn.prepareStatement(sql2,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
ResultSet rs2 = ps2.executeQuery(); //I need to use rs2 with all selected rows, outside the loop
rs2.moveToInsertRow();
rs2.updateObject(1, "update"); //why?
rs2.insertRow();
}
rs, вот еще один ResultSet
.UDT - это определяемый пользователем тип данных в моей схеме БД, а ar - это ArrayList
, определенное и заполненное // в некоторой части кода.
Кроме того, необработанный оператор выбора выглядит примерно так:
select cast(multiset(select * from table(sys.dbms_debug_vc2coll(1, 2, 33, 342))) as s9t_cells) from dual; //example
Q2: Для меня не имело смысла, зачем мне вообще обновлять объект ResultSet
.Я просто хочу получить строки из оператора select и поместить их в ResultSet
.Но в процессе указано (согласно https://www.ibm.com/support/knowledgecenter/en/SSEPEK_11.0.0/java/src/tpc/imjcc_t0052611.html), что я должен добавить UpdateXXX
метод.Если не добавлено, я получаю следующую ошибку:
java.sql.SQLException: Undefined column value on the insert row