From: | Silvio Quadri <silvioq(at)gmail(dot)com> |
---|---|
To: | Fernandos Siguenza <fsigu(at)hotmail(dot)com> |
Cc: | Foro Postgres <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Tabla temporal |
Date: | 2009-02-11 14:50:08 |
Message-ID: | 61dc71dc0902110650x2a5933e5h464dd3b0e6087073@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
El día 11 de febrero de 2009 12:09, Fernandos Siguenza
<fsigu(at)hotmail(dot)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
From | Date | Subject | |
---|---|---|---|
Next Message | Gabriel Ferro | 2009-02-11 14:51:26 | Re: orden de registro |
Previous Message | Javier Chávez B. | 2009-02-11 14:48:54 | Re: Migracion Sybase a Postgres |