В MySQL, как я могу создать хранимую процедуру, которая принимает несколько параметров? - PullRequest
3 голосов
/ 07 февраля 2012

Пример функции: вызов getThings (сумма, место, лимит, marginError)

ОПИСАНИЕ: CALL getThings(4, PA, 3, 1.2);

пример цели:

CREATE PROCEDURE getThings(IN amount X, place VARCHAR(30), lim INT, marginError double)
SELECT place, limit, amount
FROM AREA, PRODUCT
WHERE AREA.place=PRODUCT.place
AND PRODUCT.AREA=place
ORDER BY ABS(AMOUNT-marginError)
LIMIT lim;
END

Желаемая цель - извлечь 3 ближайших продукта из хранимой процедуры (используя MySQL), но я продолжаю получать ошибки синтаксиса при попытке создать процедуру.

Ответы [ 2 ]

8 голосов
/ 07 февраля 2012

, поскольку вы не опубликовали точную ошибку / сообщение,

РЕДАКТИРОВАТЬ: я предполагаю, что вы пропускаете вход / выход для параметра 2. и 3..- Не соответствует действительности, см. Комментарии.

например

DELIMITER$$
CREATE PROCEDURE getThings(IN amount X, IN place VARCHAR(30), IN lim INT)
   SELECT place, `limit`, amount
   FROM AREA, PRODUCT
   WHERE AREA.place=PRODUCT.place
   AND PRODUCT.AREA=place
   ORDER BY ABS(AMOUNT-5)
   LIMIT lim;
END$$
DELIMITER;
6 голосов
/ 07 февраля 2012

LIMIT - зарезервированное слово MySQL. Если вам действительно нужно использовать его в качестве имени столбца, вставьте его в кавычки (``). Кроме того, ваши параметры имеют те же имена, что и столбцы в вашей таблице, что добавляет путаницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...