MySQL存储过程选择返回不正确的值

时间:2010-12-02 23:05:12

标签: mysql

我注意到我的存储过程中的select语句总是返回相同的值,无论我用什么参数调用我的存储过程。这是代码:

DELIMITER $$
CREATE PROCEDURE TEST(IN id INT)
BEGIN
  DECLARE x INT DEFAULT 0;
  select id;
    SELECT paper_id
    INTO x
    FROM Paper
    WHERE ID = id
    limit 1;
    select x;
END$$

x总是返回相同的值,无论我调用哪个id测试。我注意到x的值始终是我Paper表第一行​​中paper_id的值。

但是,如果我在存储过程之外运行相同的查询,我会得到预期的值。

存储过程中出现什么问题会导致该值出现偏差?

1 个答案:

答案 0 :(得分:6)

我对MySQL的存储过程并不熟悉,但可能是表达式WHERE ID = id被评估为“Paper中的所有行,其中列ID中的值等于列ID中的值”,并且只是忽略你的参数?

尝试将参数重命名为与查询中的列名不同的内容。