MySql语法分析器
以下存储过程中存在错误语法错误:MySql语法分析器,mysql,sql,stored-procedures,Mysql,Sql,Stored Procedures,以下存储过程中存在错误语法错误: DROP PROCEDURE IF EXISTS `SP_IncDecReferenceCount`; CREATE DEFINER = `root`@`localhost` PROCEDURE `SP_IncDecReferenceCount`(pReferenceID int) BEGIN IF EXISTS(SELECT * from filesrefrences where filesrefrences.ReferenceID= pReferenceID
DROP PROCEDURE IF EXISTS `SP_IncDecReferenceCount`;
CREATE DEFINER = `root`@`localhost` PROCEDURE `SP_IncDecReferenceCount`(pReferenceID int)
BEGIN
IF EXISTS(SELECT * from filesrefrences where filesrefrences.ReferenceID= pReferenceID and filesrefrences.RefrenceCount>1) then
update filesrefrences
set
filesrefrences.RefrenceCount= filesrefrences.RefrenceCount-1
where
filesrefrences.ReferenceID= pReferenceID;
SELECT pReferenceID;
ELSE IF EXISTS(SELECT * from filesrefrences where filesrefrences.ReferenceID= pReferenceID) then
DELETE from filesrefrences WHERE filesrefrences.ReferenceID = pReferenceID;
SELECT -77;
ELSE
SELECT -99;
end if ;
END;
错误是:
[Err]1064-您的SQL语法有错误;检查与MySQL服务器版本相对应的手册,以了解第8行中“”附近使用的正确语法您需要更改
分隔符。例如
DROP PROCEDURE IF EXISTS `SP_IncDecReferenceCount`;
DELIMITER &&
CREATE PROCEDURE `SP_IncDecReferenceCount`(pReferenceID int)
BEGIN
IF EXISTS(SELECT * from filesrefrences where filesrefrences.ReferenceID= pReferenceID and filesrefrences.RefrenceCount>1) then
update filesrefrences
set
filesrefrences.RefrenceCount= filesrefrences.RefrenceCount-1
where
filesrefrences.ReferenceID= pReferenceID;
SELECT pReferenceID;
ELSE IF EXISTS(SELECT * from filesrefrences where filesrefrences.ReferenceID= pReferenceID) then
DELETE from filesrefrences WHERE filesrefrences.ReferenceID = pReferenceID;
SELECT -77;
ELSE
SELECT -99;
end if ;
END &&
DELIMITER ;
我删除了DEFINER=root
@localhost
,然后问题就解决了