我收到以下錯誤,我不知道爲什麼:語法錯誤
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