Re: mi cursor no encuentra fin de archivo...

From: "mario vargas careaga" <mario(dot)vargas(dot)careaga(at)gmail(dot)com>
To: "Ricardo Martin Gomez" <rimartingomez(at)hotmail(dot)com>
Cc: pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: mi cursor no encuentra fin de archivo...
Date: 2007-06-01 20:26:18
Message-ID: 5cdf74c90706011326k305d6a34m640b2e393e0c9802@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

OPEN cursorcito ;
LOOP
FETCH cursorcito INTO registro;
EXIT WHEN NOT FOUND;
contador := contador + 1;
END LOOP;
respondio satisfactoriamente

El 1/06/07, mario vargas careaga <mario(dot)vargas(dot)careaga(at)gmail(dot)com> escribió:
> gracias voy a probar el codigo :)
>
> El 1/06/07, Ricardo Martin Gomez <rimartingomez(at)hotmail(dot)com> escribió:
> > > 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! Pruébalo
>

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Arturo Munive 2007-06-01 20:39:08 Re: Tiempo al hacer DELETE
Previous Message Alvaro Herrera 2007-06-01 20:20:52 Re: Duda sobre tiempo de vida las tablas temporales