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

Responder a