Re: plpsql: bucle for con cursor

From: Javier Chávez B(dot) <jchavezb(at)gmail(dot)com>
To: Oswaldo Hernández <listas(at)soft-com(dot)es>
Cc: "Alvaro Herrera" <alvherre(at)alvh(dot)no-ip(dot)org>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: plpsql: bucle for con cursor
Date: 2008-10-08 15:43:55
Message-ID: ded64bba0810080843o2e2977bw4ea31b0da6545e15@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

2008/10/8 Oswaldo Hernández <listas(at)soft-com(dot)es>:
> Alvaro Herrera escribió:
>>
>> Oswaldo Hernández escribió:
>>>
>>> Hola,
>>>
>>> Necesito recorrer el contenido de un cursor en una funcion plpsql. No he
>>> visto en la documentación que se pueda utilizar for..loop sobre un cursor.
>>
>> plpgsql automaticamente usa un cursor para recorrer las consultas que
>> especificas con FOR LOOP, así que esto es innecesario. Simplemente
>> indica la consulta en el FOR. ¿A menos que estés haciendo algo raro?
>>
>
> No, no estoy haciendo nada raro, o al menos eso creo. ;)
>
> El problema se presenta en una funcion que elimina una serie de registros,
> pero, despues de eliminarlos aún necesito algunos datos de esos registro que
> he borrado. Al ya están eliminados no puedo hacer un select sobre ellos, y
> tampoco puedo procesar los datos antes de eliminar los registros puesto que
> entre la eliminacion y el procesado de los datos hay otra serie de
> operaciones que necesitan que estén en ese estado.
>
> Para solucionarlo habia pensado dos opciones: 1.- Guardar los datos que
> necesito en una tabla temporal y despues hacer un for..loop sobre la tabla
> temporal, y 2.- Cargarlos en un cursor y leer posteriormente los datos del
> cursor.

No se si sera una buena opcion pero lo que nosotros haciamos en mi
trabajo anterior con SqlServer (sin irritarse plis :0) ) es que
creabamos una tabla fisica con el ID (que denominabamos tablas de
trabajo, ya que no eran temporales ni guardaban transacciones en el
tiempo) de la coneccion haciamos el volcado de los datos que
necesitabamos y despues tenias 2 opciones:

1.- cuando querias insertar de nuevo hacia un delete con el ID de la
coneccion actual
2.- Despues de hacer el volcado eliminabamos de acuerdo al ID .

Ahora como dije era en SqlServer ,desconozco si con PG se puede hacer
algo asi pero supongo que no debe haber problema.

Slds.

J.
>
> El proceso interno de postgres me imagino que será muy similar en ambas
> opciones, pero la segunda opcion me ha parecido mas 'elegante', y como hasta
> ahora nunca habia necesitado utilizar los cursores plpsql tenia las dudas
> que he comentado sobre su uso.
>
> --
> *****************************************
> Oswaldo Hernández
> oswaldo (@) soft-com (.) es
> *****************************************
> PD:
> Antes de imprimir este mensaje, asegúrese de que es necesario.
> El medio ambiente está en nuestra mano.
> --
> TIP 8: explain analyze es tu amigo
>

--
Cumprimentos
jchavez
linux User #397972 on http://counter.li.org/

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Oswaldo Hernández 2008-10-08 16:48:46 Re: plpsql: bucle for con cursor
Previous Message Alvaro Herrera 2008-10-08 15:43:07 Re: plpsql: bucle for con cursor