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