From: | Gerardo Herzig <gherzig(at)fmed(dot)uba(dot)ar> |
---|---|
To: | Desarrollo Escuintla <desarrollo(dot)escuintla(at)gmail(dot)com> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Procedimiento almacenado |
Date: | 2010-03-08 18:08:43 |
Message-ID: | 4B953D2B.6010306@fmed.uba.ar |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Desarrollo Escuintla wrote:
> Hola lista,
>
> tengo el siguiente SP, el cual me devuelve multiples filas de una tabla:
>
> CREATE OR REPLACE FUNCTION sp_tipoauto()
> RETURNS SETOF tbl_04 AS
> $BODY$
> DECLARE
> sql_result tbl_04;
> BEGIN
> FOR sql_result in EXECUTE 'SELECT * from tbl_04' LOOP
> RETURN NEXT sql_result;
> END LOOP;
> END;
> $BODY$
> LANGUAGE 'plpgsql' VOLATILE
> COST 100
> ROWS 1000;
> ALTER FUNCTION sp_tipoauto() OWNER TO postgres;
>
>
> pero lo he agredado otro para que solo me devuelva el valor de una columna,
> cambiando la linea:
>
> FOR sql_result in EXECUTE 'SELECT campo3 from tbl_04' LOOP
>
> pero al ejecutarlo me da un error, donde me dice que no sabe que tipo de
> valor
> es el campo,
>
> ¿Como solucionar esto?
>
>
1) Necesitas que la clausula "RETURNS" se ajuste al resultado de tu
funcion. Si le esta diciendo que devuelve "setof tabla", pero en
realidad estas devolvidendo, por ejemplo, "setof varchar", no va a
funcionar.
2) Como ya te han dicho anteriormente, y con razon, siempre es
conveniente usar sql en tus funciones, en lugar de plpsql.
HTH
Gerardo
From | Date | Subject | |
---|---|---|---|
Next Message | Gerardo Herzig | 2010-03-08 18:10:04 | Re: Campo array |
Previous Message | Gilberto Castillo Martínez | 2010-03-08 18:06:32 | Re: Monitorizacion de postgres |