set SRF plpython
Chema Cortés
py en ch3m4.org
Mie Abr 5 02:49:25 CEST 2006
El Martes, 4 de Abril de 2006 15:48, FERNANDO VILLARROEL escribió:
> Bueno vale tus comentarios. La verdad es que estoy
> utilizando Postgresql 7.4 y me gustaria saber como
> implementar un set o SRF que me comentas en plpython
> para devolver un set de registros, teniendo como
> muestra el ejemplo ;
>
> create or replace function cli() returns text as '
>
> plan = plpy.prepare("SELECT rut ,nombre FROM uno
> ")
>
> rv = plpy.execute(plan)
>
> return ["(%(rut)s,%(nombre)s)"%r for r in rv]
> '
> LANGUAGE 'plpythonu';
Sería lo mismo, pero cambiando el tipo de dato que retorna para indicar que es
un conjunto:
create or replace function cli() returns setof text as '
...
Si lo quieres más refinado, puedes crearte un tipo de dato propio:
-- Por ejemplo...
create type compuesto as (rut char(20), nombre text);
create or replace function cli() returns setof compuesto as '
plan = plpy.prepare("SELECT rut ,nombre FROM uno ")
rv = plpy.execute(plan)
return [ (r["rut"],r["nombre"]) for r in rv]
'
LANGUAGE 'plpythonu';
######
NOTA: A partir del postgresql 8.x las SRFs funcionan de otra manera, más
parecidas a los generadores de python. En la versión 8.1 es preciso parchear
el postgresql:
http://projects.commandprompt.com/public/pgsql/changeset/22415
######
Más información sobre la lista de distribución Python-es