2013-01-06 23 views
0

我有以下存儲過程的錯誤語法錯誤:MySQL的句法serror

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; 

錯誤是: [錯誤] 1064 - 你在你的SQL語法錯誤;檢查對應於您的MySQL服務器版本的手冊,在第8行使用正確的語法「'''

+0

我刪除了** DEFINER ='root' @'localhost' **,然後問題解決了 –

回答

0

您需要更改DELIMITER。例如,

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 ;