[Pgsql-ayuda] Funcion retornando registros
Fernando San Martín W.
fernando@galilea.cl
Thu, 18 Mar 2004 13:35:35 +0100
intento lo siguiente:
create type tp_cc_fecha as (
nom_proyecto varchar(50),
cod_etapa integer,
concepto_pago varchar(50),
monto_contrato double precision,
pagado double precision
);
create or replace function f_cc_fecha(date) returns setof tp_cc_fecha as
'
declare
r record;
begin
for r in
SELECT DISTINCT
contrato.nom_proyecto,
contrato.cod_etapa,
tipo_pago.concepto_pago,
sum(pago_contrato.monto_contrato) as monto_contrato,
sum((ingreso.valor_ingreso / uf.valor_uf)) AS pagado
FROM contrato inner join pago_contrato on contrato.cod_contrato =
pago_contrato.cod_contrato
inner join ingreso on ingreso.cod_contrato = contrato.cod_contrato and
ingreso.cod_tipo_pago = pago_contrato.cod_tipo_pago
inner join uf on ingreso.fecha_ingreso = uf.fecha_uf
LEFT JOIN tipo_pago on pago_contrato.cod_tipo_pago =
tipo_pago.cod_tipo_pago
where ingreso.fecha_ingreso <= $1
GROUP BY
contrato.nom_proyecto,
contrato.cod_etapa,
tipo_pago.concepto_pago
loop
return next r;
end loop;
return;
end;
'
language 'plpgsql';
y obtengo el error:
gp=# select f_cc_fecha(date('2004-02-29'));
WARNING: Error occurred while executing PL/pgSQL function f_cc_fecha
WARNING: line 22 at return next
ERROR: Set-valued function called in context that cannot accept a set
ideas?, muchas gracias!
--
Fernando San Martín Woerner counter.li.org Linux User #216550
Jefe Depto. Informática Galilea S.A.
Talca, VII Región Chile (56)71-224876
GNOME Foundation Membership http://pygestor.gnome.cl