> Date: Thu, 31 May 2007 22:22:04 +0200> From: mario(dot)vargas(dot)careaga(at)gmail(dot)com> To: pgsql-es-ayuda(at)postgresql(dot)org> Subject: [pgsql-es-ayuda] mi cursor no encuentra fin de archivo...> > CREATE OR REPLACE FUNCTION pasocursor(CPRE CHAR(37),out valor1 int,out> valor2 int,out valor3 int)> AS $$> declare> paso CURSOR FOR> SELECT ene,sueldo1,aporte1,> feb,sueldo2,aporte2,mar,sueldo3,aporte3,organo,distrito1,relridu,cod_per,ci1> FROM paso2006 begin;> ene int;> sueldo1 double precision;> aporte1 double precision;> feb int;> sueldo2 double precision;> aporte2 double precision;> mar int;> sueldo3 double precision;> aporte3 double precision;> organo int;> relridu int;> distrito1 int;> cod_per int;> ci1 char(25);> estadopaso int;> begin> open paso;> FETCH paso INTO ene,sueldo1,aporte1,> feb,sueldo2,aporte2,mar,sueldo3,aporte3,organo,distrito1,relridu,cod_per,ci1;> > WHILE (found) loop> BEGIN> insert into prestaciones values> (ci1,1,2006,sueldo1,ene,aporte1,cod_per,1,organo,distrito1,relridu);> insert into prestaciones values> (ci1,2,2006,sueldo2,feb,aporte2,cod_per,1,organo,distrito1,relridu);> insert into prestaciones values> (ci1,3,2006,sueldo3,mar,aporte3,cod_per,1,organo,distrito1,relridu);> FETCH paso INTO ene,sueldo1,aporte1,> feb,sueldo2,aporte2,mar,sueldo3,aporte3,organo,distrito1,relridu,cod_per,ci1;> END;> end loop;> close paso;> end;> $$ LANGUAGE 'plpgsql' VOLATILE;
el Problema que tienes aqui amigo es exactamente con el while, found en tu caso siempre vale true y es por eso el ciclo infinito.
aca te paso como resolvi mi problema con los cursores
OPEN cursorcito ;LOOP FETCH cursorcito INTO registro; EXIT WHEN NOT FOUND; contador := contador + 1;END LOOP;
> > como ya les escribi esta mi funcion no termina entra en un cilo> infinito asumo que ees el por el while (found) y cuando tengo cursores> anidados pasa lo mismo como lo puedo controlar?> > ---------------------------(fin del mensaje)---------------------------> TIP 7: no olvides aumentar la configuración del "free space map"
_________________________________________________________________
Llama a tus amigos de PC a PC: ¡Es GRATIS!
http://get.live.com/messenger/overview