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"

Responder a