-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
 

Si necesitas que la función te devuelva varias filas de una tabla
podrias usar algo como:

CREATE OR REPLACE FUNCTION sp_tipoauto() RETURNS TABLE(
                      id_auto integer,
                      ...
                       tipoauto text
                     ) AS $$
SELECT * from tbl_04;
$$ LANGUAGE SQL STABLE;

Ojo que la función es STABLE y no VOLATILE porque no modificas nada en
ninguna tabla. Echa un vistazo a esto:
http://www.postgresql.org/docs/current/static/sql-createfunction.html


Si lo que necesitas es una fila de una tabla cuya estructura has
definido y conoces puedes usar /name/ /table_name/%ROWTYPE; como tipo
de retorno de la función. Pero como parece que sólo te hace falta un
valor:

CREATE OR REPLACE FUNCTION sp_tipoauto(integer) RETURNS text AS $$(

DECLARE
   result TEXT;

SELECT campo3 into result from tbl_04 where id_auto=$1;
return result;

$$ LANGUAGE plpgsql STABLE;


Mira tb estos links:

http://www.postgresql.org/docs/8.4/static/plpgsql-declarations.html
http://www.postgresql.org/docs/8.4/static/plpgsql-statements.html#PLPGSQL-SELECT-INTO

Un saludo.


Petru Ghita



Ing . Marcos Luís Ortíz Valmaseda wrote:
> Desarrollo Escuintla escribió:
>> 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?
>>
>>
>> -- Saludos
>>
>> _________________ José de Paz Escuintla, Guatemala Tel.
>> (502)-56041676
>>
>> http://desarrolloescuintla.wordpress.com
>>
> Bueno y de qué tipo es campo3? En caso de que necesites, puedes
> castear el valor en depedencia de su tipo. Ejemplo: FOR sql_result
> in EXECUTE 'SELECT campo3::text from tbl_04' LOOP
>
> Saludos
>
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
 
iEYEARECAAYFAkuRwj4ACgkQt6IL6XzynQQqfwCg0V2C6W/evQL0PwE56utJn64G
KAkAnRWfAr2c1kSgcDdqGVbl6c0/8SxB
=nkDD
-----END PGP SIGNATURE-----

--
TIP 2: puedes desuscribirte de todas las listas simultáneamente
    (envía "unregister TuDirecciónDeCorreo" a [email protected])

Responder a