【发布时间】:2018-05-22 23:19:40
【问题描述】:
我正在尝试编写一个简单的过程,但在第一个参数处遇到语法错误。尽我所能告诉我我正确地遵循了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....'附近的语法错误”。我想我可能会遇到更多的分隔符错误,因为我对它们的范围并不完全清楚。我相信如果这是问题所在,当它无法理解分号时,错误将出现在程序的新行上,而不是在参数声明中。
【问题讨论】:
-
删除
@。
标签: mysql stored-procedures phpmyadmin