Discussion:
[soci-users] How to do a dynamic binding to a PL/pgSQL function?
Erasmo Aguilera
2016-09-28 04:10:32 UTC
Permalink
I have this PostgreSQL PL/pgSQL function:



CREATE OR REPLACE FUNCTION get_people()

RETURNS SETOF people AS $$

BEGIN

RETURN QUERY SELECT * FROM people;

END;

$$ LANGUAGE plpgsql;



Then I try to read the data in an application using SOCI, with this code:



session sql {"postgresql://dbname=postgres"};

row person {};

procedure proc = (sql.prepare << "get_people()", into(person));

proc.execute(true);



I would expect that the person row have the data of the first person, but it
contains only one column with the name of the stored procedure (i.e.,
"get_people").



So I don't know what I am doing wrong here, or not doing. Is it the PL/pgSQL
code or the SOCI code? Maybe SOCI does not support dynamic binding for
stored procedures. Also, this method would allow me to read the first row
only, but what about the rest of rows? I know SOCI comes with the rowset
class for reading result sets, but the documentation says it only works with
queries. Please help.

Loading...