存储过程和COUNT IF语句的问题

时间:2014-03-27 04:04:09

标签: mysql stored-procedures if-statement count

所以我需要创建一个名为AddComment的存储过程,它会在我的Comments表中添加注释,然后在Commenters表中添加一个条目,如果该评论者名称不存在的话。

 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服务器版本对应的手册 r在'DECLARE name_count INT附近使用正确的语法;
SELECT COUNT(名称)INTO name_count
来自评论者

^我得到的错误。我不断调整我的代码试图找出它,但没有任何工作。

1 个答案:

答案 0 :(得分:0)

您需要使用游标来使用这样的语法,但您可以使用SET:

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

或者更好的是,由于您实际上并未使用该值,因此完全消除该变量:

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