2014-03-27 68 views
0

所以我需要創建一個名爲AddComment的存儲過程,它將向我的評論表添加註釋,然後在評論者表中添加一個條目,如果該評論者名稱不存在。存儲過程和COUNT IF語句的問題

DELIMITER //                           
CREATE PROCEDURE AddComment(Name VARCHAR(60), Title VARCHAR(60), Comments VARCHAR(60))        

BEGIN                            

INSERT INTO Comments(Name, Title, Comments)                   
VALUES (Name, Title, Comments);                      

DECLARE name_count INT; 

SELECT COUNT(Name) INTO name_count                     
FROM Commenters                          
WHERE Name = Name;                         
IF name_count = 0                         
THEN INSERT INTO Commenters(Name)                     
VAlUES(Name);                          
ELSEIF name_count = 1                        
THEN INSERT IGNORE Commenters(Name)                     
VALUES(Name);                          
END IF;                            
END;                             
//   

錯誤1064(42000):您的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,其中 是在'DECLARE name_count INT'附近使用的正確語法;
SELECT COUNT(姓名),name_count
從評論者

^是我得到的錯誤。我一直在調整我的代碼,試圖找出它,但沒有任何工作。

回答

0

需要使用遊標使用的語法類似,但可以使用SET:

SET name_count = (SELECT COUNT(*) ...); 

或者更好的,因爲你不實際使用的價值,完全消除變量:

IF NOT EXISTS (SELECT * FROM ...) THEN