DELIMITER $$ CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`client_getDebt`(`vClient` INT, `vDate` DATE) RETURNS decimal(10,2) NOT DETERMINISTIC READS SQL DATA BEGIN /** * Returns the risk of a customer. * * @param vClient client id * @param vDate date to check the risk * @return Client risk */ DECLARE vDebt DECIMAL(10,2); DECLARE vHasDebt BOOLEAN; SELECT COUNT(*) INTO vHasDebt FROM `client` c WHERE c.id = vClient AND c.typeFk = 'normal'; IF NOT vHasDebt THEN RETURN 0; END IF; CREATE OR REPLACE TEMPORARY TABLE tmp.clientGetDebt (clientFk INT); INSERT INTO tmp.clientGetDebt SET clientFk = vClient; CALL vn.client_getDebt(vDate); SELECT risk INTO vDebt FROM tmp.risk; DROP TEMPORARY TABLE tmp.clientGetDebt, tmp.risk; RETURN vDebt; END$$ DELIMITER ;