Я пытаюсь написать простую процедуру, но сталкиваюсь с синтаксической ошибкой в первом параметре. Насколько я могу судить, я следую синтаксису 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