| Home | Libraries | People | FAQ | More

###### any_connection::async_prepare_statement (2 of 2 overloads)

Prepares a statement server-side.

###### Synopsis

    template<
        class CompletionToken = with_diagnostics_t<asio::deferred_t>>
    auto
    async_prepare_statement(
        string_view stmt,
        diagnostics& diag,
        CompletionToken&& token = {});

###### Description

`stmt` should be encoded using the connection's character set.

The returned statement has `valid() == true`.

###### Object lifetimes

If `CompletionToken` is a deferred completion token (e.g. `use_awaitable`), the string pointed to by `stmt` must be kept alive by the caller until the operation is initiated.

###### Handler signature

The handler signature for this operation is `void(boost::mysql::error_code, boost::mysql::statement)`.

###### Executor

Intermediate completion handlers, as well as the final handler, are executed using `token`'s associated executor, or `this->get_executor()` if the token doesn't have an associated executor.

If the final handler has an associated immediate executor, and the operation completes immediately, the final handler is dispatched to it. Otherwise, the final handler is called as if it was submitted using `asio::post`, and is never be called inline from within this function.