Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/04/2013, 12:26
Avatar de tanliz
tanliz
 
Fecha de Ingreso: abril-2013
Ubicación: Irapuato
Mensajes: 63
Antigüedad: 11 años, 8 meses
Puntos: 1
obtener resultado de procedimiento desde un disparador

Hola! buen día... Les explico mi problema, estoy tratando de obtener el resultado que me arroja un procedimiento, con parametro de salida, llamandolo desde un disparador, pero me arroja un error en el insert. Les muestro el codigo del disparador, el procedimiento si me funciona, pues ya lo he ejecutado antes...
espero me puedan ayudar, de antemano GRACIAS!

Código:
DELIMITER $$
USE `proiplus`$$
DROP TRIGGER /*!50032 IF EXISTS */ `Actualiza_Cuentas_Por_Cobrar`$$

CREATE
    /*!50017 DEFINER = 'proi'@'localhost' */
    TRIGGER `Actualiza_Cuentas_Por_Cobrar` AFTER INSERT ON `detalle_cuentas_por_cobrar` 
    FOR EACH ROW BEGIN
	DECLARE nuevoAbono DECIMAL(10,2);
	DECLARE nuevoSaldo DECIMAL(10,2);
	DECLARE nuevaLlave VARCHAR(5);
	
	SET nuevoAbono =(SELECT Abono FROM cuentas_por_cobrar WHERE Cuenta_Por_Cobrar_Id=new.Cuenta_Por_Cobrar_Id)+new.Abono;
	SET nuevoSaldo = (SELECT Saldo FROM cuentas_por_cobrar WHERE Cuenta_Por_Cobrar_Id=new.Cuenta_Por_Cobrar_Id) - new.Abono;
	
	UPDATE cuentas_por_cobrar
	SET Abono=nuevoAbono, Saldo=nuevoSaldo
	WHERE Cuenta_Por_Cobrar_Id=new.Cuenta_Por_Cobrar_Id;
	
	IF (STRCMP(new.FormaPago, "Efectivo")==0) THEN
		CALL Crear_Llave_Caja(@llave);
		SET nuevaLlave=(SELECT @llave);
		INSERT INTO caja (Caja_Id, Tipo_Id, Origen_Id, Ingreso_Id, Fecha, Descipcion, Monto, Numero_Folio, Estatus_Registro)
		VALUES (nuevaLlave, 'Ingreso', 'Cuentas_Por_Cobrar', new.Detalle_Cuentas_Por_Cobrar_Id, new.Fecha, 'Abono de cliente', new.Abono, new.Moneda, 'Activo');
	ELSE THEN
		CALL Crear_Llave_Bancos(@llave);
		SET nuevaLlave=(SELECT @llave);
		INSERT INTO bancos (Bancos_Id, Tipo_Id, Origen_Id, Ingreso_Id, Fecha, Descipcion, Monto, Numero_Folio, Estatus_Registro)
		VALUES (nuevaLlave, 'Ingreso', 'Cuentas_Por_Cobrar', new.Detalle_Cuentas_Por_Cobrar_Id, new.Fecha, 'Abono de cliente', new.Abono, new.Moneda, 'Activo');
	END IF;
    END;
$$
DELIMITER ;
Y este es el error:

Error Code: 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '==0) then
call Crear_Llave_Caja(@llave);
set nuevaLlave=(select @llave);
i' at line 16

Última edición por tanliz; 26/04/2013 a las 12:31