# AsyncDistributedSqlEngine:executeMany

This article is deprecated.

> Start executing a list of queries.

> ### Prototype

>         void executeMany(Vector<String> *queries,
>                     Vector<ConnectionArgs> *args,
>                     Allocator *ret_allocator);

> ### Arguments

> queries | A vector of query strings
> args | A vector of ConnectionArgs structures
> ret_allocator | The allocator used to build the result set

> ### Description

> This method starts executing a list of `queries`. Each query string is executed by an individual worker process and the method `waitMany()` collects the results of each query when finished. The vector `args` contains the arguments to be substituted into the query strings. On return, the argument `ret_allocator` contains the address of the allocator used to build the query results.

> ### Returns

> No value returned.

> ### Example

> The following snippet defines a vector of query strings and 9 arguments to be substituted into the queries; then calls `executeMany()` to process these queries in parallel:

>         const size_t nWorkers = 4;
>         const char *nodes[] =
>         {
>             "localhost:5001",
>             "localhost:5002"
>         };

>         int main(int argc, char** argv)
>         {
>             try {

>                 McoSql::Allocator my_allocator;

>                 McoSql::AsyncDistributedSqlEngine engine(nWorkers);
>                 if (!engine.open(nodes, sizeof(nodes) / sizeof(nodes[0])))
>                 {
>                     printf("Open failed: %s\n", engine.getError()->cstr());
>                     return 1;
>                 }
>                 ...
>                 McoSql::Vector<McoSql::String> *queries =
>                     McoSql::Vector<McoSql::String>::create(&my_allocator, nWorkers);

>                 for (size_t i = 0; i < nWorkers; i++)
>                 {
>                     queries->items[i] = McoSql::String::create( &my_allocator,
>                         "INSERT INTO MyTable(pk, value, u2, i1, i2, i4, i8, flt, dbl)
>                         VALUES (%v, %v, %v, %v, %v, %v, %v, %v, %v)");
>                 }

>                 McoSql::Vector<McoSql::ConnectionArgs> *args =
>                     McoSql::Vector<McoSql::ConnectionArgs>::create(&my_allocator, nWorkers);
>                 for (size_t i = 0; i < nWorkers; i++)
>                 {
>                     McoSql::ConnectionArgs *ca = new McoSql::ConnectionArgs(&my_allocator, 9 /*nParams*/);
>                     ca->args[0] = McoSql::IntValue::create(&my_allocator, i*100);
>                     ca->args[1] = McoSql::String::format(&my_allocator, "str%d", i);
>                     ca->args[2] = McoSql::IntValue::create(&my_allocator, i);
>                     ca->args[3] = McoSql::IntValue::create(&my_allocator, i);
>                     ca->args[4] = McoSql::IntValue::create(&my_allocator, i);
>                     ca->args[5] = McoSql::IntValue::create(&my_allocator, i);
>                     ca->args[6] = McoSql::IntValue::create(&my_allocator, i);
>                     ca->args[7] = McoSql::RealValue::create(&my_allocator, i*100);
>                     ca->args[8] = McoSql::RealValue::create(&my_allocator, i*100);
>                     args->items[i] = ca;
>                 }
>                 McoSql::Allocator ret_allocator;

>                 engine.executeMany(queries, args, &ret_allocator);
>                 ...
>             }
>         }