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 <[email protected]> > 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
