Mysql 存储过程和计数IF语句出现问题
因此,我需要创建一个名为AddComment的存储过程,该过程将向我的Comments表中添加一条注释,如果该注释者名称不存在,则向Commenters表中添加一个条目Mysql 存储过程和计数IF语句出现问题,mysql,stored-procedures,if-statement,count,Mysql,Stored Procedures,If Statement,Count,因此,我需要创建一个名为AddComment的存储过程,该过程将向我的Comments表中添加一条注释,如果该注释者名称不存在,则向Commenters表中添加一个条目 DELIMITER // CREATE PROCEDURE AddComment(Name VARCHAR(60),
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使用near'DECLARE name\u count INT的正确语法选择COUNT(Name)进入Name\u COUNT
来自评论者
^是我犯的错误。我一直在调整我的代码,试图找出它,但什么都不起作用。你需要一个光标来使用这样的语法,但你可以使用SET:
SET name_count = (SELECT COUNT(*) ...);
或者更好的是,因为您实际上没有使用该值,所以完全消除该变量:
IF NOT EXISTS (SELECT * FROM ...) THEN