【发布时间】:2014-12-15 16:09:17
【问题描述】:
我有一个存储过程来检查用户是否已经存在,无论用于电子邮件的输入如何,它都会在数据库的第一行返回。如果我手动运行选择语句,我会得到正确的结果。有什么建议吗?
CREATE DEFINER=`myusername`@`localhost` PROCEDURE `User_Auth`(IN `Email` VARCHAR(30))
BEGIN
DECLARE User_ID INT(30);
SELECT `User ID` INTO User_ID FROM `Users` WHERE `Email` = Email LIMIT 1;
IF (User_ID > 0) THEN
SELECT * FROM `Users` WHERE `User ID` = User_ID;
ELSE
SELECT concat('No Users Found: ', Customer_Name);
END IF;
END
【问题讨论】:
-
您能否添加一些示例数据,显示您期望获得的结果与实际获得的结果?
-
User ID是怎样的列命名?
-
您似乎已将参数命名为
Email与列相同,Email。尝试将参数名称更改为其他名称。 -
@almasshaikh 绝对不是一个好的字段名称选择,但只要它被这样引用,它就可以工作。
-
谢谢@AndrewBarber 我不知道你可以在列中使用空间,但你让我很开心。是的,我今天学到了新东西:)
标签: mysql sql stored-procedures