| From: | Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org> | 
|---|---|
| To: | Milton Galo Patricio <minoztro(at)gmail(dot)com> | 
| Cc: | postgresql <pgsql-es-ayuda(at)postgresql(dot)org> | 
| Subject: | Re: problemas en funcion plpgsql | 
| Date: | 2006-01-24 14:29:55 | 
| Message-ID: | 20060124142955.GD25140@surnet.cl | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-es-ayuda | 
Milton Galo Patricio escribió:
Hola,
> CREATE FUNCTION listar(char) RETURNS setof record AS'
> 
> DECLARE
> 
> registro RECORD;
> 
> BEGIN
> 	FOR registro IN SELECT
> c.rut_cliente,c.nombre_cliente,c.apellido_cliente,c.segundo_apellido_cliente,f.nro_factura,f.total_factura
> 	FROM cliente c, factura f
> 	WHERE f.rut_cliente=$1  AND c.rut_cliente=f.rut_cliente
> LOOP
> 	RETURN NEXT registro;
> 	END LOOP;
> END;'
> LANGUAGE plpgsql VOLATILE;
> pero me tira el siguiente error:
> 
> SELECT * FROM listar('14.107.720-1') AS (nro_factura
> integer,rut_cliente char,nombre_cliente char, apellido_cliente char,
> segundo_apellido_cliente char, total_factura numeric);
El tipo que especificas en el SELECT tiene que ser el mismo que le das
al RETURN NEXT.  Aca esta claro que no es el mismo, o al menos no lo has
verificado, puesto que ya el primer campo es un rut_cliente en el FOR de
la funcion, y es un nro_factura en el SELECT.  Corrige eso.
Otro comentario que te puedo hacer es que si de verdad estas usando
tipos char, has sido mal asesorado.
-- 
Alvaro Herrera                 http://www.amazon.com/gp/registry/CTMLCN8V17R4
"Escucha y olvidarás; ve y recordarás; haz y entenderás" (Confucio)
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Alvaro Herrera | 2006-01-24 14:33:43 | Re: BLOB en Postgresql | 
| Previous Message | Jaime Casanova | 2006-01-24 14:26:43 | Re: Librería estadística para postgreSQL |