![]() |
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,
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)
.