public List<GroovyRowResult> rows(GString gstring, Closure metaClosure)
            throws SQLException {
        List<Object> params = getParameters(gstring);
        String sql = asSql(gstring, params);
        return rows(sql, params, metaClosure);
    }
public List < GroovyRowResult > rows ( GString gstring , Closure metaClosure ) throws SQLException { List < Object > params = getParameters ( gstring ) ; String sql = asSql ( gstring , params ) ; return rows ( sql , params , metaClosure ) ; }
Performs the given SQL query and return the rows of the result set.
In addition, the <code>metaClosure</code> will be called once passing in the
<code>ResultSetMetaData</code> as argument.
The query may contain GString expressions.
<p>
Example usage:
<pre>
def location = 25
def printNumCols = { meta -> println "Found $meta.columnCount columns" }
def ans = sql.rows("select * from PERSON where location_id < $location", printNumCols)
println "Found ${ans.size()} rows"
</pre>
<p>
Resource handling is performed automatically where appropriate.

@param gstring     a GString containing the SQL query with embedded params
@param metaClosure called with meta data of the ResultSet
@return a list of GroovyRowResult objects
@throws SQLException if a database access error occurs
@see #expand(Object)