我是一個MySQL的noob,今天我試圖建立一個超過5行長的MySQL調用。我不斷收到我嘗試修復幾個小時的語法錯誤,但我不知道問題出在哪裏。這裏是代碼:MySQL語法:「正確的語法使用附近」 - 在開頭右鍵
USE myDatabase;
DELIMITER //
CREATE PROCEDURE MYPROC()
BEGIN
SET @ID = 1;
SET @maxID = 3;
CREATE TEMPORARY TABLE resultTable(v DOUBLE, ttc DOUBLE);
WHILE (@ID < @maxID) DO
INSERT partTable1.v, partTable2.ttc
INTO
resultTable
FROM
(SELECT * FROM
(((SELECT time_sec, v FROM speedTable WHERE (trip_id = @ID)) as partTable1)
INNER JOIN
((SELECT time_sec, ttc FROM sightsTable WHERE (trip_id = @ID)) as partTable2) ON
(0.04 > abs(partTable1.time_sec - partTable2.time_sec)))
);
SET @ID := @ID + 1;
END WHILE;
END //
DELIMITER;
CALL MYPROC();
SELECT * FROM resultTable LIMIT 100;
是否有什麼明顯的需要糾正?
Update1:在「CREATE ..」語句中添加了分號,現在前三個語句都可以。
更新2:增加了3個分號!
Update3:按照建議使其成爲一個函數+單獨的函數調用。錯誤信息已更改!
Update4:我解決了兩個答案中提到的問題。那裏仍然有問題。請參閱上面的更新代碼和下面的錯誤消息
更新錯誤消息:
ERROR 1064 (42000) at line 4: You have an error in your SQL syntax; check the ma
nual that corresponds to your MySQL server version for the right syntax to use n
ear ' partTable2.ttc
INTO
resultTable
FROM
(SELECT * FROM
(((SELE' at line 11
親切的問候, 西奧
顯示*全*錯誤信息 –
是分享實際的錯誤信息所需要的最明顯的修正。 –
如果您一次執行所有語句,則可能需要在每個語句的末尾添加分號。 – Othya