Почему этот запрос не выполняется в пустой строке? - PullRequest
0 голосов
/ 09 сентября 2018

Я получаю сообщение об ошибке 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 '' at line 9, но в строке 9 ничего нет, и это показывает, что ошибка является пустой строкой в ​​сообщении.

START TRANSACTION;DROP PROCEDURE IF EXISTS `ReporteAcumulado`;


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

COMMIT;

MySQL query failing on an empty line

1 Ответ

0 голосов
/ 09 сентября 2018

Вы должны изменить разделитель с ; на что-то другое (// обычно используется при определении процедур 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 ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...