说我有一个功能:
CREATE OR REPLACE FUNCTION foo(ids integer[]) RETURNS void
LANGUAGE plpgsql
AS $$
BEGIN
SELECT 1;
END;
$$;
在pqxx中,调用此方法的最佳方法是什么?我可以很好地调用整数和字符串,但是传递给数组的正确类型是什么?
conn.prepare("foo_call", "select foo($1)");
conn.prepared("foo_call")(VALUE);
答案 0 :(得分:0)
因此,显然pqxx在将数组编码为字符串的情况下可以很好地发挥作用。我不确定该语法的定义位置,但它是:
'{1, 22, 333}'
typedef list<db_id_t> db_ids_t;
string to_param_string(const db_ids_t& ids) {
stringstream ss;
bool first(true);
for(db_ids_t::const_iterator i=ids.begin();i != ids.end();i++) {
ss << (first ? "{" : ",") << (*i);
first = false;
}
ss << "}";
return ss.str();
}
如果任何人都可以发布一个不必将其编码为字符串的示例,那么我很乐意接受它作为答案。