我怎样才能用我的变量 _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 ;
我正在尝试创建存储在我的 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 ;