更改了一些名稱和內容以保護我的工作。MySQL 1064沒有語法錯誤時出現語法錯誤
DELIMITER //
CREATE PROCEDURE glt(IN howMany INT)
BEGIN
DECLARE f VARCHAR(32);
DECLARE done INT DEFAULT 0;
DECLARE curs CURSOR FOR SELECT DISTINCT id FROM tpd;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
OPEN curs;
DROP TABLE IF EXISTS lt;
CREATE TEMPORARY TABLE lt LIKE tpd;
REPEAT
FETCH curs INTO f;
IF NOT done THEN
INSERT INTO lt SELECT * FROM tpd WHERE id = f ORDER BY TIME DESC LIMIT howMany;
END IF;
UNTIL done END REPEAT;
CLOSE curs;
END
上面的代碼給Linux機器上下面的錯誤,而不是Mac計算機,儘管兩者都是大小寫的文件系統,並具有相同的MySQL版本:
ERROR 1064 (42000) at line 172: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'howMany;
END IF;
UNTIL done END REPEAT;
CLOSE curs;
END' at line 16
Bye
感謝那種先生!這是一個奇怪的行爲...特別是因爲代碼在Mac上運行mysql沒有問題。只是不能在Linux上工作... –