[Pgsql-ayuda] funciones...nuevamente

GUSTAVO MARTIN OCAMPO gocampo79@hotmail.com
Wed, 12 Nov 2003 13:28:54 +0000


ok Alvaro, gracias porque me lance a programar la funcion con lo poco que se 
de pl/pgsql pero ahora me cierra lo que me dijiste y si funciona lo que 
quiero hacer no dudare en ponerlo en el sitio de ejemplos.
Ah.... si existiera la posibilidad de que vinieras a la Argentina a realizar 
charlas....lo harias?
(Ojo, nada mas es una idea mia).
Desde ya gracias y saludos tambien para toda la lista.-


>From: Alvaro Herrera <alvherre@dcc.uchile.cl>
>To: GUSTAVO MARTIN OCAMPO <gocampo79@hotmail.com>
>CC: pgsql-ayuda@tlali.iztacala.unam.mx
>Subject: Re: [Pgsql-ayuda] funciones...nuevamente
>Date: Wed, 12 Nov 2003 10:08:00 -0300
>
>On Wed, Nov 12, 2003 at 12:05:06PM +0000, GUSTAVO MARTIN OCAMPO wrote:
>
> > Alvaro, lo que quiero hacer es un trigger que se dispare cuando hago 
>insert
> > o update sobre una tabla y ejecute una funcion que me extraiga el año
> > (o ano si no sale la eñe) de un campo tipo fecha, [...] almacenarlo en
> > una tabla para despues utilizarlo.
>
>Bueno, primero que nada EXECUTE no recibe expresiones, sólo escalares,
>por lo tanto tienes que usar una variable para construir la consulta y
>darle eso a EXECUTE.
>
>Ademas, no retornes NULL sino NEW (de lo contrario no se va a insertar
>el valor).
>
>Por otra parte, no necesitas un FOR LOOP porque el trigger se ejecuta
>para cada tupla.  Puedes hacer
>
>DECLARE
>	consulta TEXT;
>	anno INTEGER
>BEGIN
>	SELECT INTO anno EXTRACT(year FROM NEW.fecha_vencimiento);
>	consulta := ''INSERT INTO annos_vencimiento VALUES ('' ||
>		anno || '')'';
>	EXECUTE consulta;
>	RETURN NEW;
>END;
>
>(sin probar, pero la idea es mas o menos esa)
>
>Supongo que en rigor deberías guardar además un contador que diga
>cuantas veces ha aparecido cada año de manera que puedas borrarlo si
>llega a cero (cosa que puede pasar si haces DELETE de todos los
>registros de ese año).  Queda de ejercicio para el estudiante ...
>(y de paso, cuando tengas eso listo, lo contribuyes para ponerlo en el
>sitio de ejemplos de pl/pgsql)
>
>--
>Alvaro Herrera (<alvherre[a]dcc.uchile.cl>)
>"Pido que me den el Nobel por razones humanitarias" (Nicanor Parra)

_________________________________________________________________
¿Estás buscando un auto nuevo?  http://www.yupimsn.com/autos/