Mysql陌生人语法错误#1064
我已经搜索了20分钟,为什么我在mySql中出现这个错误,但找不到答案 #1064-您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以获取第5行“”附近使用的正确语法 下面是有问题的代码块:Mysql陌生人语法错误#1064,mysql,syntax-error,Mysql,Syntax Error,我已经搜索了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;
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新手。请提前感谢。对于过程、函数或触发器中的多个语句,您必须设置另一个分隔符,而不是
代码>。否则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处理程序来处理光标找不到更多行的情况。请参见示例。是否添加了continue处理程序?游标声明必须出现在处理程序声明之前以及变量和条件声明之后。如果这不能解决问题,请使用新代码和新错误消息编辑您的问题。是的,我添加了continue处理程序。但后来我意识到我遗漏了括号:)