[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