Gabriel Hermes Colina Zambra escribió:

> select
> public.pivot_table2('central.cabezales','id_empresa','id_documentos','importe_con_impuestos','ref');
> 
> Veo pivot_table2
>     ref
> Despues hago asi
> 
> FETCH ALL IN ref;
> Cursor ref no existe es lo que me devuelve
> 
> Creo que es una lastima no seguir profundizando por
> estar trancado aqui, por que aunque muy rudimentario
> por ahora, esta seria una buena solucion

Tienes que abrir una transaccion antes de invocar a la funcion.  El
FETCH tienes que hacerlo dentro de la misma transaccion.

La razon es que los cursores solo viven hasta la duracion de una
transaccion; al cerrar la transaccion, se cierra el cursor
automaticamente.  Como no abriste ninguna transaccion explicitamente
antes de llamar a la funcion, se abre una automaticamente para
invocarla, y luego se cierra en cuanto se termina, cerrandose asi el
cursor.  Cuando haces FETCH, estas en una transaccion nueva, y el cursor
ya no existe.


(Nota: los cursores que se declaran WITH HOLD pueden persistir mas alla
del fin de una transaccion, pero tienen sus propios problemas, por lo
que es mejor no usarlos a menos que sepas lo que estas haciendo).

-- 
Alvaro Herrera                 http://www.amazon.com/gp/registry/DXLWNGRJD34J
"No hay cielo posible sin hundir nuestras raíces
 en la profundidad de la tierra"                        (Malucha Pinto)
--
TIP 6: ¿Has buscado en los archivos de nuestra lista de correo?
               http://archives.postgresql.org/pgsql-es-ayuda

Responder a