【问题标题】:Issue with stored procedure and COUNT IF statement存储过程和 COUNT IF 语句的问题
【发布时间】:2014-03-27 04:04:09
【问题描述】:

所以我需要创建一个名为 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;                                                                                                                
 //          

ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册 r 'DECLARE name_count INT;
附近使用的正确语法 SELECT COUNT(Name) INTO name_count
来自评论者

^ 是我得到的错误。我一直在调整我的代码试图弄清楚,但没有任何效果。

【问题讨论】:

    标签: mysql stored-procedures if-statement count


    【解决方案1】:

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

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

    或者更好的是,因为您实际上并没有使用该值,所以完全消除该变量:

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

    【讨论】:

      猜你喜欢
      • 2015-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-27
      • 1970-01-01
      • 2011-03-16
      • 1970-01-01
      • 2018-06-02
      相关资源
      最近更新 更多