code: public void call(GString gstring, Closure closure) throws Exception {
          List<Object> params = getParameters(gstring);
          String sql = asSql(gstring, params);
          call(sql, params, closure);
      }
docs: Performs a stored procedure call with the given parameters,
  calling the closure once with all result objects.
  <p>
  See {@link #call(String, List, Closure)} for more details about
  creating a <code>Hemisphere(IN first, IN last, OUT dwells)</code> stored procedure.
  Once created, it can be called like this:
  <pre>
  def first = 'Scott'
  def last = 'Davis'
  sql.call "{call Hemisphere($first, $last, ${Sql.VARCHAR})}", { dwells {@code ->}
  println dwells
  }
  </pre>
  <p>
  As another example, see {@link #call(String, List, Closure)} for more details about
  creating a <code>FullName(IN first)</code> stored function.
  Once created, it can be called like this:
  <pre>
  def first = 'Sam'
  sql.call("{$Sql.VARCHAR = call FullName($first)}") { name {@code ->}
  assert name == 'Sam Pullara'
  }
  </pre>
  <p>
  Resource handling is performed automatically where appropriate.
  
  @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 #call(String, List, Closure)
  @see #expand(Object)