Я получаю следующее сообщение об ошибке, и я не знаю, почему:Синтаксическая ошибка на запятой в процедуре MySQL
1064 - У Вас есть ошибка в вашем SQL синтаксиса; проверьте руководство, соответствующее версии сервера MySQL, для правильного синтаксиса для использования рядом с ';
DELIMITER $$
CREATE PROCEDURE staffnewid_all()
BEGIN
DECLARE x int;
DECLARE y int;
DECLARE z int;
DECLARE charid varchar;
DECLARE a int;
DECLARE b int;
DROP TEMPORARY TABLE IF EXISTS cms_psm.temp_nostaf;
CREATE TEMPORARY TABLE IF NOT EXISTS cms_psm.temp_nostaf (tempid INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, char_id varchar(1));
INSERT INTO cms_psm.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
Что происходит после того, как ваш запрос? Вы никогда не используете '$$', чтобы показать конец процедуры, и вы никогда не устанавливаете разделитель обратно в точку с запятой. Я подозреваю, что один из них причиняет вам неприятности. – AdamMc331