为什么此查询在空行上失败?

时间:2018-09-09 17:07:59

标签: mysql sql

我收到错误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 :(得分:1)

您应将分隔符从;更改为其他内容(定义MySQL proc时通常使用//)。如果尚未安装,请在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 ;