Вы должны изменить разделитель с ;
на что-то другое (//
обычно используется при определении процедур MySQL). Если у вас его еще нет, добавьте DELIMITER //
перед оператором CREATE PROCEDURE
и поставьте DELIMITER ;
после оператора END
для процедуры. Я также не верю, что вам нужно начинать и совершать транзакции при определении процедуры - я никогда не считал это необходимым, но, возможно, вы делаете что-то другое. Вам также нужно //
после КОНЦА. Кроме того, я никогда не видел пустой блок между IF...THEN...END IF
, поэтому я не уверен, как это может повлиять на вещи.
Итак, ваш код должен выглядеть примерно так:
DROP PROCEDURE IF EXISTS `ReporteAcumulado`;
DELIMITER //
CREATE DEFINER = CURRENT_USER PROCEDURE `ReporteAcumulado`(in Tipo int,in dtInicio date,in dtFin date,in dtmensual date)
SQL SECURITY INVOKER
BEGIN
if Tipo=0 then
END if;
if Tipo=1 then
end if;
END//
DELIMITER ;