Re: Funcion Trigger

From: Desarrollo Escuintla <desarrollo(dot)escuintla(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Funcion Trigger
Date: 2010-05-04 15:16:56
Message-ID: p2oa6e132361005040816h98f5268coeb75ad018d4486@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Ya resolvi el problema,
era cuestión de tipo de argumento.

la función sp_traesaldo(integer),
debería recibir como paramentro un valor numeric:

sp_traesaldo(numeric)

saludos

2010/5/4 Desarrollo Escuintla <desarrollo(dot)escuintla(at)gmail(dot)com>

> Hola buen día,
>
> tengo el siguiente trigger:
>
>
>
> CREATE TRIGGER tri_actualizar_asig
> AFTER INSERT
> ON tbl_08
> FOR EACH ROW
> EXECUTE PROCEDURE *tri_actualiza_asignacion()*;
>
> y aqui el procedimiento:
>
> CREATE OR REPLACE FUNCTION *tri_actualiza_asignacion()*
> RETURNS trigger AS
> $BODY$
> DECLARE resto numeric;
> BEGIN
> * resto=sp_traesaldo(NEW.tbl_07_asignacion);* //aqui me
> salta el error
> IF (resto=0) THEN
> UPDATE tbl_07 SET tbl_07_estado='PAGADO' WHERE
> tbl_07_asignacion=NEW.tbl_07_asignacion;
> END IF;
> RETURN NEW;
> END;
> $BODY$
> LANGUAGE 'plpgsql' VOLATILE
> COST 100;
>
>
>
> dentro del cual llamo a la siguiente funcion "sp_traesaldo(integer)":
> (que me devuelve el saldo restante entre el precio de venta y los abonos
> realizados y que recibe
> como parametro el número de asignacion de la venta)
>
> CREATE OR REPLACE FUNCTION sp_traesaldo(integer)
> RETURNS numeric AS
> $BODY$
> SELECT
> (tbl_03.tbl_03_pventa - SUM(tbl_10.tbl_10_cant)) AS resto
> FROM tbl_10 LEFT JOIN tbl_08
> ON tbl_10.tbl_08_no=tbl_08.tbl_08_no
> LEFT JOIN tbl_07 ON
> tbl_07.tbl_07_asignacion=tbl_08.tbl_07_asignacion
> LEFT JOIN tbl_03 ON
> tbl_07.tbl_03_placa=tbl_03.tbl_03_placa
> LEFT JOIN tbl_01 ON
> tbl_07.tbl_01_codigo=tbl_01.tbl_01_codigo
> WHERE tbl_10.tbl_08_no
> IN (SELECT tbl_08.tbl_08_no FROM tbl_08 WHERE
> tbl_08.tbl_07_asignacion=$1)
> GROUP BY tbl_03.tbl_03_pventa,tbl_07.tbl_07_asignacion,
> tbl_07.tbl_07_fecha,tbl_01.tbl_01_codigo;
> $BODY$
> LANGUAGE 'sql' VOLATILE
> COST 100;
> --
>
>
> pero al insertar un registro en la tabla "tbl_08" donde se debe activar el
> trigger
> despues de la inserción, me resulta el siguiente error:
>
>
> ERROR: no existe la función sp_traesaldo(numeric)
> LINE 1: SELECT sp_traesaldo( $1 )
> ^
> HINT: Ninguna función coincide en el nombre y tipos de argumentos. Puede
> desear agregar conversión explícita de tipos.
> QUERY: SELECT sp_traesaldo( $1 )
> CONTEXT: PL/pgSQL function "tri_actualiza_asignacion" line 3 at asignación
>
>
>
> Saludos
>
> _________________
> José de Paz
> Escuintla, Guatemala
> Tel. (502)-56041676
>
> http://desarrolloescuintla.wordpress.com
>
>

--
Saludos

_________________
José de Paz
Escuintla, Guatemala
Tel. (502)-56041676

http://desarrolloescuintla.wordpress.com

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Fernando Hevia 2010-05-04 15:17:16 RE: Funcion Trigger
Previous Message Fabián Eduardo Núñez Salcedo 2010-05-04 15:11:47 Re: Problema con la barra de Menu