在MySQL中如何创建一个带有多个参数的存储过程?

sta*_*low 3 mysql database stored-procedures call

函数示例: 调用getThings(amount,place,limit,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
Run Code Online (Sandbox Code Playgroud)

期望的目标是从存储过程中检索最接近的3个产品(使用MySQL)但是在尝试创建过程时我一直遇到sytax错误.

Ber*_*her 8

既然你没有发布确切的错误/消息,

编辑:我假设您缺少2.和3.参数的IN/OUT. - 不正确,请参阅评论.

例如

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;
Run Code Online (Sandbox Code Playgroud)

  • “ IN” /“ OUT” /“ INOUT”说明符是可选的。默认情况下,参数为“ IN” (3认同)
  • 谢谢,总有一些东西要学习。 (2认同)

Mch*_*chl 6

LIMIT是MySQL的保留字.如果你真的需要将它用作列名,请输入反引号(``).此外,您的参数与表中的列具有相同的名称,这会增加混乱.

  • `SELECT place,limit,amount` < - 你确定这里没有'限制'吗? (4认同)