DROP PROCEDURE IF EXISTS patransferencia; DELIMITER $$ CREATE PROCEDURE patransferencia(pid_banca int, pfecha varchar(50), pmonto float, ptipo varchar(50), pid_actividad int, ptipo_actividad varchar(50), pconcepto varchar(300) ) BEGIN declare saldoFinalNeto float default 0; declare id_insertado int default 0; declare mensaje varchar(50); declare saldoActualPositivo float default 0; declare saldoActualGastado float default 0; declare saldoActualNeto float default 0; /*SET saldoActual = 15.5;*/ SELECT IFNULL(SUM(monto),0) INTO saldoActualPositivo FROM transaccion WHERE pid_banca = id_banca AND (tipo='Recarga' || tipo='Promocional') ; SELECT IFNULL(SUM(monto),0) INTO saldoActualGastado FROM transaccion WHERE pid_banca = id_banca AND (tipo='Compra' || tipo='Propina') ; SET saldoActualNeto = saldoActualPositivo-saldoActualGastado; SET saldoFinalNeto = saldoActualPositivo-saldoActualGastado; IF (saldoActualNeto>=pmonto) THEN INSERT INTO `transaccion`(`id`, `id_banca`, `fecha`, `monto`, `tipo`, `id_actividad`, `tipo_actividad`, `concepto`) VALUES (NULL, pid_banca, pfecha, pmonto, ptipo, pid_actividad, ptipo_actividad, pconcepto) ; SET saldoFinalNeto =saldoActualNeto-pmonto; SET id_insertado =LAST_INSERT_ID(); SET mensaje = 'SALDO SUFICIENTE'; ELSE SET mensaje = 'NO SUFICIENTE'; END IF; select saldoActualPositivo,saldoActualGastado,saldoActualNeto,mensaje,id_insertado,saldoFinalNeto; END$$ CALL patransferencia(1 , '2019-01-31 10:00:00' , 150 , 'Compra' , '' , '' , 'Concepto' ); /* 2019-01-31 10:00:00 */