如何使用libpqxx c ++将不需要的数组作为参数执行postgresql函数

时间:2017-08-18 11:10:49

标签: c++ linux postgresql libpq libpqxx

我创建了一个postgresql函数,

create or replace function check4(interval_ int[],password_ text[]) 
returns void as
$$
begin
     EXECUTE '
      INSERT INTO test(id,password)
      SELECT unnest($1),unnest($2)'
   USING $1,$2;  
end;
$$
language plpgsql;

然后我尝试使用libpqxx

从c ++执行上述过程
try
    {
        connection *conn;
        conn = new connection("dbname = test user = postgres password = postgres hostaddr = 127.0.0.1 port = 5432");
        if (conn->is_open()) {
            cout<<"Opened database successfully:"<<std::endl<<std::flush;
        }
        else {
            cout << "Can't open database" << std::endl << std::flush;

        }

        int arr_id[2] = { 1,2 };
        string arr_pass[2] = { "hi","bye" };
        work P(*conn);
        conn->prepare("example", "select check4(UNNEST(:$1), UNNEST(:$2));");
            for (int i = 0; i < 2; i++)
            {
                P.prepared("example")(arr_id[i])(arr_pass[i]).exec();
            }

        P.commit();
        cout << "Records created successfully" << endl;

    }
    catch (const std::exception &e) {
        cerr << e.what() << std::endl;

    }

在这段代码中,数据是逐个插入的,但我想要批量插入数据。我想创建5000条记录的数组并一次性插入。

请有人建议我,如何将数组作为参数传递给函数? 任何帮助表示赞赏。

谢谢。

0 个答案:

没有答案