我有一個存儲過程,在我的本地PC語法上可以接受,我有MySQL工作臺5.2.44,我認爲我的本地版本的MySQL是5.5.29由文件夾名稱判斷。下面是代碼,我已經減少到最低限度爲了說明mysql存儲過程語法不一致
DELIMITER $$
CREATE PROCEDURE `usp_insert_booking_test_2`(
IN p_dtmTimeSlot DATETIME
)
BEGIN
INSERT INTO tblBookings (dtmTimeSlot)
SELECT p_dtmTimeSlot
FROM tblBookings
WHERE NOT EXISTS (SELECT * FROM tblBookings WHERE dtmTimeSlot = p_dtmTimeSlot) LIMIT 1;
END$$
正如你所看到的,我想確保我不會在同一個時間段創建兩個預訂。是的,我在表上也有一個約束來做到這一點。腰帶&牙套。當我嘗試在遠程主機(運行MySQL版本5.1.68-cll)上添加此過程時,它說
#1064 - 您的SQL語法錯誤;檢查與您的MySQL服務器版本對應的手冊,以便在第12行「'附近使用正確的語法。
第12行是WHERE NOT EXISTS行。我試圖刪除限制1,這沒有什麼區別。有沒有辦法編寫查詢,以便MySQL 5.1能接受它?
的最後一行應該是'END $$'(太空任務)而行的最後一個行後丟失: 'DELIMITER;' – Kovge 2013-04-18 07:44:07
的空間END'後'失蹤 同樣的問題:HTTP:/ /stackoverflow.com/questions/1102109/mysql-delimiter-syntax-errors – Kovge 2013-04-18 07:45:30