功能示例: 调用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)但是在尝试创建过程时我一直遇到sytax错误。
答案 0 :(得分:8)
因为您没有发布确切的错误/消息,
编辑:我认为你是 缺少2.和3.参数的IN / OUT。 - 不正确,请参阅评论。
e.g。
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;
答案 1 :(得分:6)
LIMIT
是MySQL保留字。如果你真的需要将它用作列名,请输入反引号(``)。此外,您的参数与表中的列具有相同的名称,这会增加混乱。