我怎样才能用我的变量 _Limite 传递的数字来限制我的查询?

how can I limit my query with the number that my variable _Limite passes?

我正在尝试创建存储在我的 MySql 5.0 版数据库中的此过程,但它不允许我创建它。

错误在"LIMIT _Limite"显然这个版本不接受这句话

如何使用我的变量 _Limite 传递的数字来限制我的查询?

BEGIN
    SELECT p.Id,
        Peso
    FROM pacas p
    INNER JOIN entradas e ON EntradaFK = e.Id
    WHERE FibraFK = _FibraFK
        AND PresentacionFK = _PresentacionFK
        AND PatioFK = _Patio
        AND e.Fecha <= _Fecha
        AND e.Estado = 'A'
        AND p.Estado = 'A'
    ORDER BY Id
    LIMIT _Limite;

END

我觉得还是直接查询比较好,不是存储过程,因为这个版本不允许我这样做

您可以使用准备好的语句来实现。

SET _Limite := 1;

CALL statement(CONCAT('
    SELECT p.Id,
        Peso
    FROM pacas p
    INNER JOIN entradas e ON EntradaFK = e.Id
    WHERE FibraFK = _FibraFK
        AND PresentacionFK = _PresentacionFK
        AND PatioFK = _Patio
        AND e.Fecha <= _Fecha
        AND e.Estado = \'A\'
        AND p.Estado = \'A\'
    ORDER BY Id
    LIMIT ', _Limite, ';
    '))
    ;

准备好的语句助手实现:

DELIMITER $$
CREATE PROCEDURE statement(IN dynamic_statement TEXT)
BEGIN
      SET @dynamic_statement := dynamic_statement;
      PREPARE prepared_statement FROM @dynamic_statement;
      EXECUTE prepared_statement;
      DEALLOCATE PREPARE prepared_statement;
  END;

DELIMITER ;