MySQL存储过程返回超过预期

时间:2014-07-16 17:17:51

标签: mysql sql stored-procedures

我开始使用存储过程但是遇到了一些问题,我的行数比预期的多。我有一张包含以下数据的表格:

----------------------
| user_id | username |
----------------------
|    1    |   fred   |
----------------------
----------------------
|    2    |   andy   |
----------------------

并制定如下程序:

CREATE PROCEDURE `VerifyUser`(userId INT, userName CHAR(40))
BEGIN
    SELECT * FROM users WHERE user_id = userId AND username = userName;
END

问题是无论我为“userName”输入什么,我都会得到一个结果,我似乎得到了user_id = 2的记录:

CALL VerifyUser(2, 'dontWork');

----------------------
| user_id | username |
----------------------
|    2    |   andy   |
----------------------

如果我只有userId,我可以让它工作但是当我添加第二个参数时,我得到的结果无论如何。我究竟做错了什么?我假设它与字符串参数有关。

谢谢!

1 个答案:

答案 0 :(得分:2)

问题是您的列名和参数名是相同的(不区分大小写)。为参数使用不同的名称,你会没事的。

否则DB认为你的意思

username_column = username_column

总是如此。