![]() |
Home | Libraries | People | FAQ | More |
Starts a statement execution as a multi-function operation.
template<
class FieldLikeTuple,
class CompletionToken,
class EnableIf = detail::enable_if_field_like_tuple<FieldLikeTuple>>
auto
async_start_statement_execution(
const statement& stmt,
FieldLikeTuple&& params,
execution_state& st,
diagnostics& diag,
CompletionToken&& token);
Writes the execute request and reads the initial server response and
the column metadata, but not the generated rows, if any. After this operation
completes, st will have
execution_state::meta populated, and may become
execution_state::complete if the operation did
not generate any rows (e.g. it was an UPDATE).
Metadata will be populated according to this->meta_mode().
If the operation generated any rows, these must
be read (by using read_some_rows) before engaging
in any further operation involving server communication. Otherwise, the
results are undefined.
The statement actual parameters (params)
are passed as a std::tuple of elements. String parameters
should be encoded using the connection's character set.
stmt.valid() == true
If CompletionToken is
deferred (like use_awaitable),
and params contains any
reference type (like string_view),
the caller must keep the values pointed by these references alive until
the operation is initiated. Value types will be copied/moved as required,
so don't need to be kept alive. It's not required to keep stmt alive, either.
The handler signature for this operation is void(boost::mysql::error_code).