Re: ayuda con triggers

From: leonardo(dot)amezquita(at)ubiquando(dot)com(dot)co
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: ayuda con triggers
Date: 2005-02-07 23:22:33
Message-ID: 1107818553.4207f839acc09@207.44.134.65
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda


Voy a explicar todo el procedimiento que estoy haciendo,

Leo los datos de un plano que tiene todos los campos que van en na tabla que se
llama ventas.

Antes de hacer una insercion en esta tabla deseo hacer otra insercion en otra
tabla que se llama agreg_ventas_mes, si el registro ya existe con los
parametros de centro y linea entonces lo que tengo que hacer es una
actualizacion del registro.

Ahora mi problema es que los datos de tipo numeric estan insertando valores
nulls pero al hacer un RAISE NOTICE yo veo los valores bien espero que puedan
ayudarme les envio nuevamente la funcion.

DECLARE
valtotven NUMERIC(16,2)=0;
valtotpes NUMERIC(16,2)=0;
valtotdes NUMERIC(16,2)=0;
valtotiva NUMERIC(16,2)=0;
valtotcos NUMERIC(16,2)=0;
valtotcan NUMERIC(16,2)=0;
valtotren NUMERIC(16,2)=0;
registro agreg_ventas_mes%ROWTYPE;
BEGIN
SELECT INTO registro * FROM agreg_ventas_mes WHERE ven_cen_codigo =
NEW.ven_cen_codigo AND ven_tie_codigo = NEW.ven_tie_codigo AND ven_mae_codigo =
NEW.ven_mae_codigo AND ven_lin_codigo = NEW.ven_lin_codigo AND
ven_cat_codigo=NEW.ven_cat_codigo;
IF NOT FOUND THEN
RAISE NOTICE 'Monto: % + %', NEW.venm_val_venta,
NEW.venm_vta_pesos;
RAISE NOTICE 'INSERT INTO agreg_ventas_mes (ven_cen_codigo,
ven_nom_centro, ven_tie_codigo, ven_mae_codigo, ven_nom_producto,
ven_lin_codigo, ven_nom_linea, ven_cat_codigo, ven_nom_categoria,
venm_val_venta, venm_vta_pesos, venm_val_descto, venm_val_iva, venm_val_costo,
venm_val_cantidad, venm_rentabilidad) VALUES (%, %, %, %, %, %, %, %, %, %, %,
%, %, %, %, % )', NEW.ven_cen_codigo, NEW.ven_nom_centro, NEW.ven_tie_codigo,
NEW.ven_mae_codigo, NEW.ven_nom_producto, NEW.ven_lin_codigo,
NEW.ven_nom_linea, NEW.ven_cat_codigo, NEW.ven_nom_categoria,
NEW.venm_val_venta, NEW.venm_vta_pesos, NEW.venm_val_descto, NEW.venm_val_iva,
NEW.venm_val_costo, NEW.venm_val_cantidad, NEW.venm_rentabilidad;
INSERT INTO agreg_ventas_mes (ven_cen_codigo, ven_nom_centro,
ven_tie_codigo, ven_mae_codigo, ven_nom_producto, ven_lin_codigo,
ven_nom_linea, ven_cat_codigo, ven_nom_categoria, venm_val_venta,
venm_vta_pesos, venm_val_descto, venm_val_iva, venm_val_costo,
venm_val_cantidad, venm_rentabilidad) VALUES (NEW.ven_cen_codigo,
NEW.ven_nom_centro, NEW.ven_tie_codigo, NEW.ven_mae_codigo,
NEW.ven_nom_producto, NEW.ven_lin_codigo, NEW.ven_nom_linea,
NEW.ven_cat_codigo, NEW.ven_nom_categoria, NEW.venm_val_venta,
NEW.venm_vta_pesos, NEW.venm_val_descto, NEW.venm_val_iva, NEW.venm_val_costo,
NEW.venm_val_cantidad, NEW.venm_rentabilidad);
END IF;
IF FOUND THEN
valtotven := registro.venm_val_venta ;
valtotpes := registro.venm_vta_pesos ;
valtotdes := registro.venm_val_descto ;
valtotiva := registro.venm_val_iva + NEW.venm_val_iva ;
valtotcos := registro.venm_val_costo + NEW.venm_val_costo ;
valtotcan := registro.venm_val_cantidad + NEW.venm_val_cantidad
;
valtotren := registro.venm_rentabilidad + NEW.venm_rentabilidad
;
UPDATE agreg_ventas_mes SET venm_val_venta = valtotven,
venm_vta_pesos = valtotpes , venm_val_descto = valtotdes, venm_val_iva =
valtotiva, venm_val_costo = valtotcos, venm_val_cantidad = valtotcan,
venm_rentabilidad = valtotren WHERE ven_cen_codigo = NEW.ven_cen_codigo AND
ven_tie_codigo = NEW.ven_tie_codigo AND ven_mae_codigo = NEW.ven_mae_codigo AND
ven_lin_codigo = NEW.ven_lin_codigo AND ven_cat_codigo=NEW.ven_cat_codigo;
END IF;
RETURN NEW;
END;

espero que puedan ayudarme.

Quoting Alvaro Herrera <alvherre(at)dcc(dot)uchile(dot)cl>:

>
> On Mon, Feb 07, 2005 at 04:30:32PM -0600, leonardo(dot)amezquita(at)ubiquando(dot)com(dot)co
> wrote:
> > gracias alvaro pero el problema no va por ese lado por que efectivamente
> estan
> > llegando valores pero no se por que reazon los cambia por nulos estoy
> pasando
> > enviando el insert al archivo de log y la insercion va bien o lo que
> imprime se
> > ve bien pero en la practica no lo hace, tengo una duda tengo un valor de
> tipo
> > string, el problema es que el formato del insert no le puedo poner
> comillas
> > sencillas es en el mismo script, espero hacerme entender y que puedan
> > ayudarme.
>
> Hum ... no me quedo muy claro tu problema. Por favor publica en la
> lista (incluye _siempre_ una copia a la lista!!!), con el ejemplo
> completo (definiciones de tablas, la sentencia INSERT, etc) para ver si
> se puede reproducir, y que es lo que esta pasando.
>
> --
> Alvaro Herrera (<alvherre[(at)]dcc(dot)uchile(dot)cl>)
> "Un poeta es un mundo encerrado en un hombre" (Victor Hugo)
>
> ---------------------------(fin del mensaje)---------------------------
> TIP 10: visita nuestro canal de IRC #postgresql-es en irc.freenode.net
>

----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Fernando Aguada 2005-02-07 23:35:48 Re: Sincronizar bases de datos
Previous Message Jessie Cordoba 2005-02-07 23:04:32 AYUDA CONEXION ESTACIONES AL SERVIDOR