ฉันกำลังพยายามเขียนขั้นตอนง่ายๆ แต่พบข้อผิดพลาดทางไวยากรณ์ที่พารามิเตอร์แรก อย่างดีที่สุดที่ฉันสามารถบอกได้ว่าฉันกำลังติดตามไวยากรณ์ของ CREATE PROCEDURE อย่างถูกต้อง
ฉันถูกจำกัดให้เข้าถึงฐานข้อมูลของฉันด้วย phpMyAdmin นี่คือสคริปต์สร้างที่ฉันพยายามเรียกใช้:
DROP PROCEDURE IF EXISTS product_index_swap/
CREATE PROCEDURE product_index_swap (@id INT, @oldIndex INT, @newIndex INT)
BEGIN
DECLARE @swapID;
SET @swapID = (SELECT `id` FROM `product` WHERE `order_index` = @newIndex LIMIT 1);
UPDATE `products` SET `order_index` = (CASE WHEN `id` = @id THEN @newIndex
WHEN `id` = @swapID THEN @oldIndex END)
WHERE `id` IN (@id, @swapID);
END
ฉันใช้ตัวเลือกบน phpMyAdmin เพื่อเปลี่ยนตัวคั่นเป็น /
ฉันได้รับข้อผิดพลาดทางไวยากรณ์ "ใกล้ '@id INT, @oldIndex INT....
" ฉันคิดว่าฉันอาจพบข้อผิดพลาดเกี่ยวกับตัวคั่นมากกว่านี้เนื่องจากฉันยังไม่ชัดเจนในขอบเขตของข้อผิดพลาดเหล่านั้น ฉันเชื่อว่าหากนั่นเป็นปัญหา ข้อผิดพลาดจะขึ้นบรรทัดใหม่ในขั้นตอนเมื่อไม่สามารถเข้าใจเครื่องหมายอัฒภาค ไม่ใช่ที่การประกาศพารามิเตอร์
@
- person Paul Spiegel   schedule 08.12.2017