С учетом следующей функции:
create or replace FUNCTION "GETADDRESSES"
RETURN sys_refcursor
IS
address_cursor sys_refcursor;
BEGIN
OPEN address_cursor FOR
SELECT * FROM Address;
RETURN address_cursor;
END;
Я хотел бы иметь возможность вносить изменения в этот набор результатов в Java и публиковать изменения в базе данных. Он вызывается в Java следующим образом:
String genericQuery = "{ call ? := getAddresses() }";
CallableStatement stmt = connection.prepareCall(genericQuery, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
stmt.registerOutParameter(1, OracleTypes.CURSOR);
stmt.execute();
ResultSet rs = (ResultSet)stmt.getObject(1);
while (rs.next())
{
System.out.println (rs.getString(2));
rs.updateString(2, "*" + rs.getString(2));
}
stmt.close();
, что вызывает исключение "Недопустимая операция для набора результатов только для чтения". Есть ли способ вернуть этот курсор как нечто, что можно обновить и отправить обратно в БД из Java? Я использую Oracle 10g.
Спасибо, Роб