El día 11 de febrero de 2009 12:09, Fernandos Siguenza <fs...@hotmail.com> escribió: > Amigos, tengo una consulta una tabla temporal tiene las mismas operaciones > que una tabla normal??, ya que tengo una funcion en la que uso una tabla > temporal, realizo operaciones de insert pero no me funciona no se que estoy > haciendo man adjunto envio la funcin que estoy usando > > CREATE OR REPLACE FUNCTION balanceMensual1(vagecod character varying, > vfeccorte date) > RETURNS refcursor AS > $BODY$ > DECLARE > rBalMensual record; > cuenta record; > resultado refcursor; > BEGIN > > create temporary table BalMes(asicuecod varchar(20),asideb > numeric,asihab numeric,enero numeric,febrero numeric, > marzo numeric,abril numeric,mayo numeric,junio numeric,julio > numeric,agosto numeric,septiembre numeric, > octubre numeric,noviembre numeric,diciembre numeric,grupo character > varying(1)); > for rBalMensual in > select extract(MONTH from asifec) as > mes,asidet.asicuecod,sum(asidet.asideb) as asideb,sum(asidet.asihab) as > asihab,cuegrutip as grupo > FROM asicab,asidet,agencias,cuentagrupo > WHERE agencias.agecod=asicab.asiagecod > and asicab.asiagecod=asidet.asiagecod > and asicab.asidoc=asidet.asidoc > and asicab.asinum=asidet.asinum > and cuentagrupo.cuegrucod=substring(asidet.asicuecod,1,1) > and asifec<=vFecCorte > group by mes,asidet.asicuecod,cuegrutip > ORDER BY mes,asicuecod > LOOP > if rBalMensual.mes=1 then > --verifico si ya hay un registro con el codigo de la cuenta > contable en la tabla temporal > select into cuenta * from BalMes where > asicuecod=rBalMensual.asicuecod; > if NOT FOUND then > --Aqui esta el problema que cuando no encuantra un > registro con el codigo de la cuanta contable realizo un insert en la tabla > temporal, pero parece que nunca hace el insert ya que nunca encuentra nada > en la tabla osea siempre durante todo el loop ingresa aqui > insert into > BalMes(asicuecod,asideb,asihab,enero,febrero,marzo,abril,mayo,junio,julio,agosto,septiembre,octubre,noviembre,diciembre,grupo) > values(rBalMensual.asicuecod,rBalMensual.asideb,rBalMensual.asihab,0,0,0,0,0,0,0,0,0,0,0,0,'A'); > else > update balmes set > enero=rBalMensual.asideb-rBalMensual.asihab where > asicuecod=rBalMensual.asicuecod; > end if; > end if; > END LOOP; > open resultado for select * from balmes; > return resultado; > END; > $BODY$ > LANGUAGE 'plpgsql' VOLATILE >
No te recomiendo crear la tabla temporal en una función. ¿No te dio error en tiempo de ejecución? Silvio -- TIP 7: no olvides aumentar la configuración del "free space map"