Mysql陌生人语法错误#1064

时间:2014-09-30 11:28:06

标签: 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;

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。提前谢谢。

1 个答案:

答案 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