DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`hasAnyNegativeBase`() RETURNS tinyint(1) DETERMINISTIC BEGIN /* Calcula si existe alguna base imponible negativa * Requiere la tabla temporal tmp.ticketToInvoice(id) * * returns BOOLEAN */ DECLARE hasAnyNegativeBase BOOLEAN; DROP TEMPORARY TABLE IF EXISTS tmp.ticket; CREATE TEMPORARY TABLE tmp.ticket (KEY (ticketFk)) ENGINE = MEMORY SELECT id ticketFk FROM tmp.ticketToInvoice; CALL ticket_getTax(NULL); SELECT COUNT(*) INTO hasAnyNegativeBase FROM( SELECT SUM(taxableBase) as taxableBase FROM tmp.ticketTax GROUP BY pgcFk HAVING taxableBase < 0 ) t; DROP TEMPORARY TABLE tmp.ticketTax; DROP TEMPORARY TABLE tmp.ticket; RETURN hasAnyNegativeBase; END$$ DELIMITER ;