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.

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

Responder a