Saya mencoba menulis prosedur sederhana tetapi saya mengalami kesalahan sintaksis pada parameter pertama. Sejauh yang saya tahu, saya mengikuti sintaks CREATE PROCEDURE dengan benar.
Saya terbatas dalam mengakses database saya dengan phpMyAdmin. Ini skrip pembuatan yang saya coba jalankan:
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
Saya menggunakan opsi di phpMyAdmin untuk mengubah pembatas menjadi /.
Saya menerima kesalahan sintaksis "dekat '@id INT, @oldIndex INT....
". Saya pikir saya mungkin menemukan lebih banyak kesalahan pembatas karena saya tidak sepenuhnya memahami cakupannya. Saya yakin jika itu masalahnya, kesalahannya akan terjadi pada baris baru dalam prosedur ketika gagal memahami titik koma, bukan pada deklarasi parameter.
@
. - person Paul Spiegel   schedule 08.12.2017