Re: Procedimiento almacenado

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

In response to

Browse pgsql-es-ayuda by date

  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