From: | jeferson alvarez <jalvarez(at)renova(dot)com(dot)pe> |
---|---|
To: | Jaime Casanova <systemguards(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: tiempo de vida de una tabla temporal |
Date: | 2007-03-19 16:02:27 |
Message-ID: | 45FEB413.5000709@renova.com.pe |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Jaime Casanova escribió:
> On 3/17/07, jeferson alvarez <jalvarez(at)renova(dot)com(dot)pe> wrote:
>> El caso es que dentro de una funcion creo una tabla temporal con un
>> select
>> execute 'create temp table axxxx WITHOUT OIDS as select
>> arti_in_id,max(kard_in_id) as id_kardex
>> from alma_p_kardex
>> where
>> fecha_a_numero(kard_ch_fecha)<='||fecha_a_numero($2)||' and
>> alma_in_id='||$1||'
>> group by alma_in_id,arti_in_id';
>> luego ejecuto la funcíon una vez y todo bien pero la segunda vez que
>> ejecuto la función me dice la realación ya existe
>> ERROR: la relación «axxxx» ya existe
>> anterior mente algo parecido me paso y me dijeron que le ponga without
>> oids y se solucionaba con esto bueno lo puse para este caso y continua
>> igual,
>> pregunta ¿ la tabala temporal creada dentro de una función no se
>> destruye al terminar la funcion? o es es uqe hay que hacerlo
>> explicitamente o me falta configurar algo o gregarle alguna instruccion
>> a la funcion
>>
>
> no. de forma predeterminada la tabla existira hasta que cierres la
> sesion (la conexion, el psql, etc.). si deseas cambiar ese
> comportamiento puedes ejecutar DROP TABLE explicitamente al final de
> la transaccion o mejor aun al crear la tabla incluir al final ON
> COMMIT DROP.
>
> http://www.postgresql.org/docs/8.2/static/sql-createtableas.html
>
segun lo que digiste y lei seria asi lo que necesito pero tengo un error
de sintaxis que no veo
CREATE LOCAL TEMPORARY TABLE detalle_consaldo ON COMMIT DROP as
select
i.id_articulo,i.alma_in_id,i.inv_do_saldo,at.aldt_do_cantidad,at.aldt_in_orden,at.arti_in_id,
(select sum(x.aldt_do_cantidad)+i.inv_do_saldo
from alm_t_detalle_1 x
where x.aldt_in_orden<=at.aldt_in_orden and
x.arti_in_id=at.arti_in_id and
x.aldt_ch_id=at.aldt_ch_id) as saldo_reg,
at.aldt_do_subtotal,at.aldt_do_precio_prom,at.aldt_do_saldo_moneda,i.inv_do_monto,at.aldt_ch_id
from alm_p_inventario i
right join alm_t_detalle_1 at on
i.id_articulo=at.arti_in_id and i.alma_in_id=$6
where at.aldt_ch_id=$13
order by i.id_articulo;
ERROR: error de sintaxis en o cerca de «ON» at character 47
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2007-03-19 16:21:21 | Re: tiempo de vida de una tabla temporal |
Previous Message | Alvaro Herrera | 2007-03-19 15:10:04 | Re: Tipo Referencia en PostgreSQL |