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
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 |