Hi everybody
I have a stored function that returns a large number of rows as a cursor. I am trying to prevent the entire result set
beingreturned at once. The code fragment below hits an OutOfMemoryError on the "while(resultSet.next())" line, which I
believeis for this reason.
// ...get connection...
connection.setAutoCommit(false);
// prepare the stored function call
statement = connection.prepareCall("{ ? = call get_events(?,?,?) }",
ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
statement.registerOutParameter(1, Types.OTHER);
// set the fetch size so that the query doesn't return all results at once
statement.setFetchDirection(ResultSet.FETCH_FORWARD);
statement.setFetchSize(1000);
// execute the query
statement.execute();
resultSet = (ResultSet)statement.getObject(1);
while(resultSet.next()) {
// ...process rows...
The code includes my first attempt to make this work by setting the fetch size. This still doesn't fix it, and I can
seethat the result set that I am setting the fetch size for probably isn't the one that I am getting back and iterating
through. I can't figure out how I ought to be doing this though.
Can anyone offer any advice on how this should be done?
Many thanks
-James