code: public List<List<Object>> executeInsert(GString gstring) throws SQLException {
          List<Object> params = getParameters(gstring);
          String sql = asSql(gstring, params);
          return executeInsert(sql, params);
      }
docs: Executes the given SQL statement (typically an INSERT statement).
  Use this variant when you want to receive the values of any
  auto-generated columns, such as an autoincrement ID field.
  The query may contain GString expressions.
  <p>
  Generated key values can be accessed using
  array notation. For example, to return the second auto-generated
  column value of the third row, use <code>keys[3][1]</code>. The
  method is designed to be used with SQL INSERT statements, but is
  not limited to them.
  <p>
  The standard use for this method is when a table has an
  autoincrement ID column and you want to know what the ID is for
  a newly inserted row. In this example, we insert a single row
  into a table in which the first column contains the autoincrement ID:
  <pre>
  def sql = Sql.newInstance("jdbc:mysql://localhost:3306/groovy",
  "user",
  "password",
  "com.mysql.jdbc.Driver")
  
  def keys = sql.executeInsert("insert into test_table (INT_DATA, STRING_DATA) "
  + "VALUES (1, 'Key Largo')")
  
  def id = keys[0][0]
  
  // 'id' now contains the value of the new row's ID column.
  // It can be used to update an object representation's
  // id attribute for example.
  ...
  </pre>
  <p>
  Resource handling is performed automatically where appropriate.
  
  @param gstring a GString containing the SQL query with embedded params
  @return A list of the auto-generated column values for each
  inserted row (typically auto-generated keys)
  @throws SQLException if a database access error occurs
  @see #expand(Object)