我开始使用存储过程但是遇到了一些问题,我的行数比预期的多。我有一张包含以下数据的表格:
----------------------
| 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,我可以让它工作但是当我添加第二个参数时,我得到的结果无论如何。我究竟做错了什么?我假设它与字符串参数有关。
谢谢!
答案 0 :(得分:2)
问题是您的列名和参数名是相同的(不区分大小写)。为参数使用不同的名称,你会没事的。
否则DB认为你的意思
username_column = username_column
总是如此。