-
Notifications
You must be signed in to change notification settings - Fork 1
/
prepared_statements.cpp
36 lines (27 loc) · 987 Bytes
/
prepared_statements.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <psql/connection.hpp>
#include <boost/asio/awaitable.hpp>
#include <boost/asio/deferred.hpp>
#include <iostream>
namespace asio = boost::asio;
asio::awaitable<void> async_main(std::string conninfo)
{
auto exec = co_await asio::this_coro::executor;
auto conn = psql::connection{ exec };
co_await conn.async_connect(conninfo, asio::deferred);
// Creating a prepared statement.
co_await conn.async_prepare("add_two", "SELECT $1::INT + $2::INT;", asio::deferred);
// Example 1
auto result = co_await conn.async_query_prepared("add_two", psql::mp(1, 2), asio::deferred);
std::cout << as<int>(result) << std::endl;
// Example 2
// A pipeline of prepared queries.
auto results = co_await conn.async_exec_pipeline(
[](psql::pipeline& p)
{
for (auto i = 0; i < 10; i++)
p.push_query_prepared("add_two", psql::mp(1, i));
},
asio::deferred);
for (const auto& result : results)
std::cout << as<int>(result) << std::endl;
}