MySQL过程中分号的语法错误

MySQL过程中分号的语法错误,mysql,phpmyadmin,Mysql,Phpmyadmin,我收到以下错误,我不知道原因: 1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解要使用的正确语法 近' 以语句结束代码 END;$$ Delimiter ; 它起作用了实际上我忘了这个 DECLARE charid varchar; 应该是 DECLARE charid varchar(1); 感谢您的帮助查询后会发生什么?您从未使用$$显示过程的结尾,也从未将分隔符设置回分号。我怀疑其中一个给你带来了麻烦。 BEGIN DECLARE x int; DE

我收到以下错误,我不知道原因:

1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解要使用的正确语法 近'


以语句结束代码

END;$$ 
Delimiter ;
它起作用了实际上我忘了这个

DECLARE charid varchar;
应该是

DECLARE charid varchar(1);

感谢您的帮助

查询后会发生什么?您从未使用$$显示过程的结尾,也从未将分隔符设置回分号。我怀疑其中一个给你带来了麻烦。
BEGIN
DECLARE x int;
DECLARE y int;
DECLARE z int;
DECLARE a int;
DECLARE b int;
DECLARE charid varchar(1);

DROP TEMPORARY TABLE IF EXISTS temp_nostaf;

CREATE TEMPORARY TABLE IF NOT EXISTS temp_nostaf (tempid INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, char_id varchar(1));

INSERT INTO temp_nostaf (char_id) SELECT DISTINCT(LEFT(nostaf, 1)) FROM staf_new_no;

SET a = (SELECT min(tempid) FROM cms_psm.temp_nostaf ORDER BY tempid);
SET b = (SELECT COUNT(tempid) FROM cms_psm.temp_nostaf);


WHILE a<=b DO

SET charid = (SELECT char_id FROM cms_psm.temp_nostaf WHERE tempid=a);

SET x = (SELECT count(*) FROM staf_peribadi WHERE nostaf LIKE CONCAT('%', charid, '%') ORDER BY nostaf ASC);
SET y = (SELECT min(id) FROM staf_new_no WHERE nostaf LIKE CONCAT('%', charid, '%') ORDER BY nostaf ASC);
SET z = 1;



WHILE z<=x DO
  UPDATE staf_new_no SET nostaf_new = CONCAT(charid, LPAD(z, 6, '0')) WHERE id=y;
  SET z = z + 1 ;
  SET y = y + 1 ;
END WHILE;

SET a = a + 1 ;

END WHILE;

END
BEGIN
DECLARE x int;
DECLARE y int;
DECLARE z int;
DECLARE a int;
DECLARE b int;
DECLARE charid varchar(1);

DROP TEMPORARY TABLE IF EXISTS temp_nostaf;

CREATE TEMPORARY TABLE IF NOT EXISTS temp_nostaf (tempid INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, char_id varchar(1));

INSERT INTO temp_nostaf (char_id) SELECT DISTINCT(LEFT(nostaf, 1)) FROM staf_new_no;

SET a = (SELECT min(tempid) FROM cms_psm.temp_nostaf ORDER BY tempid);
SET b = (SELECT COUNT(tempid) FROM cms_psm.temp_nostaf);


WHILE a<=b DO

SET charid = (SELECT char_id FROM cms_psm.temp_nostaf WHERE tempid=a);

SET x = (SELECT count(*) FROM staf_peribadi WHERE nostaf LIKE CONCAT('%', charid, '%') ORDER BY nostaf ASC);
SET y = (SELECT min(id) FROM staf_new_no WHERE nostaf LIKE CONCAT('%', charid, '%') ORDER BY nostaf ASC);
SET z = 1;



WHILE z<=x DO
  UPDATE staf_new_no SET nostaf_new = CONCAT(charid, LPAD(z, 6, '0')) WHERE id=y;
  SET z = z + 1 ;
  SET y = y + 1 ;
END WHILE;

SET a = a + 1 ;

END WHILE;

END