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

Mic*_*l L 3 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$$
Run Code Online (Sandbox Code Playgroud)

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

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

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

a_h*_*ame 6

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

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