Re: Consulta sobre cursor

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

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

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alberto Cuevas 2016-04-28 15:14:16 Re: Consulta sobre cursor
Previous Message Hellmuth Vargas 2016-04-28 14:18:28 Re: Obtener registros