私はこの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") を持つ列は 1 つしかありません。
したがって、ここで何が間違っているのか、何をしていないのかわかりません。PL/pgSQL コードですか、それとも SOCI コードですか? SOCI は、ストアド プロシージャの動的バインドをサポートしていない可能性があります。また、この方法では最初の行のみを読み取ることができますが、残りの行はどうでしょうか? SOCIにはrowset
結果セットを読み取るためのクラスが付属していることは知っていますが、ドキュメントにはクエリでのみ機能すると書かれています。助けてください。