| Home | Libraries | People | FAQ | More

###### connection::start_execution (1 of 2 overloads)

Starts a SQL execution as a multi-function operation.

###### Synopsis

    template<
        class ExecutionRequest,
        class ExecutionStateType>
    void
    start_execution(
        ExecutionRequest&& req,
        ExecutionStateType& st,
        error_code& err,
        diagnostics& diag);

###### Description

Writes the execution request and reads the initial server response and the column metadata, but not the generated rows or subsequent resultsets, if any. `st` may be either an `execution_state` or `static_execution_state` object.

After this operation completes, `st` will have `execution_state::meta` populated. Metadata will be populated according to `this->meta_mode()`.

If the operation generated any rows or more than one resultset, these must be read (by using `read_some_rows` and `read_resultset_head`) before engaging in any further network operation. Otherwise, the results are undefined.

req may be either a type convertible to `string_view` containing valid SQL or a bound prepared statement, obtained by calling `statement::bind`. If a string, it must be encoded using the connection's character set. Any string parameters provided to `statement::bind` should also be encoded using the connection's character set.

When using the static interface, this function will detect schema mismatches for the first resultset. Further errors may be detected by `read_resultset_head` and `read_some_rows`.