Skip site navigation (1) Skip section navigation (2)

Re: tiempo de vida de una tabla temporal

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 (view raw or flat)
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


In response to

Responses

pgsql-es-ayuda by date

Next:From: Alvaro HerreraDate: 2007-03-19 16:21:21
Subject: Re: tiempo de vida de una tabla temporal
Previous:From: Alvaro HerreraDate: 2007-03-19 15:10:04
Subject: Re: Tipo Referencia en PostgreSQL

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group