我有这个 PostgreSQL PL/pgSQL 函数:
CREATE OR REPLACE FUNCTION get_people()
RETURNS SETOF people AS $$
BEGIN
RETURN QUERY SELECT * FROM people;
END;
$$ LANGUAGE plpgsql;
然后我尝试使用 SOCI 读取应用程序中的数据,代码如下:
session sql {"postgresql://dbname=postgres"};
row person {};
procedure proc = (sql.prepare << "get_people()", into(person));
proc.execute(true);
我希望person
有第一个人的数据,但它只包含一个带有存储过程名称的列(即“get_people”)。
所以我不知道我在这里做错了什么,或者没有做什么。是 PL/pgSQL 代码还是 SOCI 代码?也许 SOCI 不支持存储过程的动态绑定。此外,这种方法只允许我读取第一行,但其余行呢?我知道 SOCI 带有rowset
用于读取结果集的类,但文档说它只适用于查询。请帮忙。