| From: | "Ernesto Verbanaz" <ernesto(dot)verbanaz(at)syswarp(dot)com(dot)ar> | 
|---|---|
| To: | <pgsql-es-ayuda(at)postgresql(dot)org> | 
| Subject: | RE: RV: problema con funciones que retornan cursor | 
| Date: | 2010-01-07 18:28:28 | 
| Message-ID: | 7F1D5DF216224FFFBD58EACEB564B2A1@syswarpuno | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-es-ayuda | 
> -----Mensaje original-----
> De: pgsql-es-ayuda-owner(at)postgresql(dot)org [mailto:pgsql-es-ayuda-
> owner(at)postgresql(dot)org] En nombre de Yudelsy Castellón García
> Enviado el: Martes, 05 de Enero de 2010 19:25
> Para: pgsql-es-ayuda(at)postgresql(dot)org
> 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:eenriquez(at)cav(dot)desoft(dot)cu
> Teléfono: 53-33-266200
> 
> --
> TIP 6: ¿Has buscado en los archivos de nuestra lista de correo?
>                http://archives.postgresql.org/pgsql-es-ayuda
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Fernandos Siguenza | 2010-01-07 21:15:16 | Eficiencia en Funcion | 
| Previous Message | Fernando Hevia | 2010-01-07 15:36:18 | RE: [Spam] Consulta sobre pg_dump |