Re: Consulta sobre cursor

From: Alberto Cuevas <betocuevas(dot)net(at)gmail(dot)com>
To: Anthony Sotolongo <asotolongo(at)gmail(dot)com>
Cc: POSTGRES <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Consulta sobre cursor
Date: 2016-04-28 15:14:16
Message-ID: CA+mENxqCYhRLNtvE06DG_OZMype4X0Gn37nk3gj-_EMnHuZmGw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Gracias Anthony.

El jue., 28 abr. 2016 a las 9:45, Anthony Sotolongo (<asotolongo(at)gmail(dot)com>)
escribió:

> Hola nuevamente Alberto, como dice los textos y ejemplos del link que te
> envié (http://www.postgresql.org/docs/9.5/interactive/plpgsql-cursors.html)
> puedes usarlos para:
> 1- Retornar desde una función que devuelve muchos registros,
> 2-Puede ser útil también para devolver más de un cursor, es decir puedes
> retornar dos o más resultados y usarlos desde tu APP, este es el ejemplo
> que viene en la doc del link que te envié:
>
> CREATE FUNCTION myfunc(refcursor, refcursor) RETURNS SETOF refcursor AS $$
> BEGIN
> OPEN $1 FOR SELECT * FROM table_1;
> RETURN NEXT $1;
> OPEN $2 FOR SELECT * FROM table_2;
> RETURN NEXT $2;
> END;
> $$ LANGUAGE plpgsql;
>
> -- need to be in a transaction to use cursors.
> BEGIN;
>
> SELECT * FROM myfunc('a', 'b');
>
> FETCH ALL FROM a;
> FETCH ALL FROM b;
> COMMIT;
>
>
> 3- También puede usarlo para paginar tus resultados desde PostgreSQL, y
> escribes los códigos desde tu APP ejemplo:
>
> BEGIN;-- defines tu cursorDECLARE micursor CURSOR FOR SELECT * FROM mitabla;-- obtienes 20 tuplas
> FETCH 20 FROM micursor ;
> -- ...trabajas con elllas
>
> -- obtienes 20 tuplas mas
>
> FETCH 20 FROM micursor;
>
> -- ...trabajas con ellas
>
> -- haces lo que vayas hacer COMMIT;
>
>
>
> Al menos estos tres son los conozco y de una forma u otra los he implementado, puede que hayan varios más, y otros usuarios de aquí los puedan compartir
>
>
> saludos
>
>
> El 28 de abril de 2016, 11:05, Alberto Cuevas <betocuevas(dot)net(at)gmail(dot)com>
> escribió:
>
>> Anthony gracias por la respuesta.
>>
>> Me serviria de mucho algún ejemplo en el cual debo usar un cursor, si no
>> es molestia estimados.
>>
>> Saludos.
>>
>> El mié., 27 abr. 2016 a las 12:49, Anthony Sotolongo (<
>> asotolongo(at)gmail(dot)com>) escribió:
>>
>>> Hola Alberto, creo que el primer párrafo del siguiente link de la
>>> documentación indica el momento para usar cursores:
>>> http://www.postgresql.org/docs/9.5/interactive/plpgsql-cursors.html
>>>
>>> saludos
>>>
>>> On 27/04/16 14:21, Alberto Cuevas wrote:
>>> > Hola a todos, siempre he leido que se debe evitar usar cursores, que
>>> > es una mala practica y pues nunca los he usado en ningun motor de BD
>>> > en los que he trabajado (SQL Server, Oracle, PostgreSQL)
>>> >
>>> > Actualmente trabajo con Oracle y PostgreSQL, he encontrado mucha
>>> > similitud y ambas me gustan.
>>> >
>>> > Mi pregunta es en que momento usar un cursor.
>>> >
>>> > Disculpen si la pregunta es muy basica.
>>> >
>>> > Saludos.
>>>
>>>
>>> -
>>> Enviado a la lista de correo pgsql-es-ayuda (
>>> pgsql-es-ayuda(at)postgresql(dot)org)
>>> Para cambiar tu suscripción:
>>> http://www.postgresql.org/mailpref/pgsql-es-ayuda
>>>
>>
>

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alberto Cuevas 2016-04-28 15:14:42 Re: Obtener registros
Previous Message Anthony Sotolongo 2016-04-28 14:45:30 Re: Consulta sobre cursor