Galera, é o seguinte.
Tenho um SQL e o mesmo retorna mais de 900.000 registros, preciso deste número total de registros, mas sem fazer um count(*) no sql.
Uma das soluções que achei aqui no forum foi:
//vai para o último registro
rs.last();
//pega a linha
ultimoRegistro = rs.getRow();
//volta para o ínicio do resultset, ou seja o primeiro registro
rs.beforeFirst();
Ok, funciona perfeitamente quando são poucos registros, mas no meu caso dá o erro abaixo.
Exception in thread “main” java.lang.OutOfMemoryError: Java heap space
at oracle.jdbc.dbaccess.DBDataSetImpl.getBytesItem(DBDataSetImpl.java:1439)
at oracle.jdbc.driver.OracleStatement.getBytesInternal(OracleStatement.java:3309)
at oracle.jdbc.driver.OracleStatement.getBytesValue(OracleStatement.java:4564)
at oracle.jdbc.driver.OracleResultSetImpl.getBytes(OracleResultSetImpl.java:606)
at oracle.jdbc.driver.ScrollableResultSet.cacheAllRows(ScrollableResultSet.java:2127)
at oracle.jdbc.driver.ScrollableResultSet.getLastRow(ScrollableResultSet.java:2207)
at oracle.jdbc.driver.ScrollableResultSet.last(ScrollableResultSet.java:510)
at br.infoseg.action.Main.main(Main.java:218)
Alguém tem alguma idéia como resolver isso, Jedis do java.
Grande abraço.