我一直在搜索20分钟,为什么我在mySql中收到此错误但无法找到答案。
"#1064 - 您的SQL语法出错;查看与您的MySQL服务器版本相对应的手册,以获得在''附近使用的正确语法。在第5行"
以下是相关代码块:
CREATE PROCEDURE marouri_insert_users_emails()
BEGIN
DECLARE a INT;
DECLARE b char(16);
DECLARE cur1 CURSOR FOR SELECT id,name FROM glpi_users;
OPEN cur1;
read_loop: LOOP
FETCH cur1 INTO a,b;
IF a > 6 THEN
INSERT INTO glpi_useremails(users_id,is_default,is_dynamic,email) VALUES (a,1,0,CONCAT(b, '@alomrane.ma');
END IF;
END LOOP;
CLOSE cur1;
END;
新的mysql btw。提前谢谢。
答案 0 :(得分:3)
对于过程或函数或触发器中的多个语句,必须设置另一个分隔符而不是;
。否则MySQL认为,您的过程在第一个;
之后完成,这导致语法错误。试试这样:
DELIMITER $$
CREATE PROCEDURE marouri_insert_users_emails()
BEGIN
DECLARE a INT;
DECLARE b char(16);
DECLARE cur1 CURSOR FOR SELECT id,name FROM glpi_users;
OPEN cur1;
read_loop: LOOP
FETCH cur1 INTO a,b;
IF a > 6 THEN
INSERT INTO glpi_useremails(users_id,is_default,is_dynamic,email) VALUES (a,1,0,CONCAT(b, '@alomrane.ma');
END IF;
END LOOP;
CLOSE cur1;
END$$
DELIMITER ;
哦,你可能想要声明一个continue处理程序来处理光标没有找到更多行的情况。有关示例,请参阅according manual page。