> -----Mensaje original-----
> De: [email protected] [mailto:pgsql-es-ayuda-
> [email protected]] En nombre de Yudelsy Castellón García
> Enviado el: Martes, 05 de Enero de 2010 19:25
> Para: [email protected]
> Asunto: [pgsql-es-ayuda] RV: problema con funciones que retornan cursor
> 
> Hola comunidad, hace varios días he estado trabajando con una función
> que me debe devolver como resultado tuplas de una consulta, como las
> columnas de las salidas pueden variar en cantidad decidí que la función
> retornaría un cursor. El problema es que no sé cómo llamar a la función
> para que muestre las tuplas resultantes.
> 
> La función es más o menos como esta:
> 
> CREATE or replace FUNCTION eliminar_tambien(refcursor) RETURNS SETOF
> refcursor AS $$
> BEGIN
>      OPEN $1 FOR SELECT * FROM nmusuario;
>      RETURN NEXT $1;
> END;
> $$ LANGUAGE plpgsql;
> 
> La forma en que la llamo es:
> 
> BEGIN;
> 
> SELECT * FROM eliminar_tambien('a');
> 
> FETCH ALL in a;
> COMMIT;
> 
> y el resultado que me da es :
> 
> Query result with 1 rows discarded.
> Query result with 8 rows discarded.

Prueba con esto, tal y como esta, solo cambia TABLA por alguna existente en
tu modelo:

CREATE FUNCTION reffunc(refcursor) RETURNS refcursor AS '
BEGIN
    OPEN $1 FOR SELECT * FROM TABLA;
    RETURN $1;
END;
' LANGUAGE plpgsql;

-- BEGIN;
SELECT reffunc('funccursor');
FETCH ALL IN funccursor;
-- COMMIT;

http://www.postgresql.org/docs/8.0/interactive/plpgsql-cursors.html

Saludos.
Ernesto


> 
> Pero como hago para ver las tuplas? He buscado en el foro pero no
> encuentro una solución y en google tampoco aparece nada o por lo menos
> no lo encuentro.
> 
> Agradecería cualquier ayuda. Muchas gracias de antemano
> 
> --
> Saludos,
> 
> Ing. Esneiker Enriquez Cabrera.
> Excelencia en Software.
> Desoft S.A. en Ciego de Ávila.
> Joaquín de Agüero Esq. Calle 2. Ciego de Ávila. Cuba.
> email:[email protected]
> Teléfono: 53-33-266200
> 
> --
> TIP 6: ¿Has buscado en los archivos de nuestra lista de correo?
>                http://archives.postgresql.org/pgsql-es-ayuda


--
TIP 7: no olvides aumentar la configuración del "free space map"

Responder a