code: public void query(GString gstring, Closure closure) throws SQLException {
          List<Object> params = getParameters(gstring);
          String sql = asSql(gstring, params);
          query(sql, params, closure);
      }
docs: Performs the given SQL query, which should return a single
  <code>ResultSet</code> object. The given closure is called
  with the <code>ResultSet</code> as its argument.
  The query may contain GString expressions.
  <p>
  Example usage:
  <pre>
  def location = 25
  sql.query "select * from PERSON where location_id < $location", { ResultSet rs ->
  while (rs.next()) println rs.getString('firstname')
  }
  </pre>
  <p>
  All resources including the ResultSet are closed automatically
  after the closure is called.
  
  @param gstring a GString containing the SQL query with embedded params
  @param closure called for each row with a GroovyResultSet
  @throws SQLException if a database access error occurs
  @see #expand(Object)