我收到错误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;
答案 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 ;