public <T extends PO>POResultSet<T> scroll() throws DBException {
  String sql=buildSQL(null,true);
  PreparedStatement pstmt=null;
  ResultSet rs=null;
  POResultSet<T> rsPO=null;
  try {
    pstmt=DB.prepareStatement(sql,trxName);
    rs=createResultSet(pstmt);
    rsPO=new POResultSet<T>(table,pstmt,rs,trxName);
    rsPO.setCloseOnError(true);
    return rsPO;
  }
 catch (  SQLException e) {
    log.log(Level.SEVERE,sql,e);
    throw new DBException(e,sql);
  }
 finally {
    if (rsPO == null) {
      DB.close(rs,pstmt);
      rs=null;
      pstmt=null;
    }
  }
}

public < T extends PO > POResultSet < T > scroll ( ) throws DBException { String sql = buildSQL ( null , true ) ; PreparedStatement pstmt = null ; ResultSet rs = null ; POResultSet < T > rsPO = null ; try { pstmt = DB . prepareStatement ( sql , trxName ) ; rs = createResultSet ( pstmt ) ; rsPO = new POResultSet < T > ( table , pstmt , rs , trxName ) ; rsPO . setCloseOnError ( true ) ; return rsPO ; } catch ( SQLException e ) { log . log ( Level . SEVERE , sql , e ) ; throw new DBException ( e , sql ) ; } finally { if ( rsPO == null ) { DB . close ( rs , pstmt ) ; rs = null ; pstmt = null ; } } }
return a simple wrapper over a jdbc resultset . it is the caller responsibility to call the close method to release the underlying database resources .
