当我尝试创建一个函数来检索用户名从用户表使用他们的电子邮件它给了我这个无用的错误:
#1064 -你有一个错误的SQL语法;查看手册对应于MySQL服务器版本,以便使用正确的语法声明名称VARCHAR;开始选择
userName
作为名称user
WHERE ' ema' at line 2
,相同的代码与不同的语法工作在mssql所以我想知道有什么不同?换句话说,我哪里做错了?
DELIMITER ;;
CREATE FUNCTION getUserName(email varchar(50)) RETURNS VARCHAR
BEGIN
DECLARE name VARCHAR;
SELECT `userName` AS name FROM `user` WHERE `email` = email;
RETURN name;
END ;;
首先,varchar需要有长度,而您在两个地方缺少长度。另外,您需要选择变量并返回变量,因为您不能返回resultset。此外,您应该转义名称,并且不需要为列添加别名,因为无论如何都要选择到。所以,你的代码应该是这样的:
DELIMITER ;;
CREATE FUNCTION getUserName(email VARCHAR(50)) RETURNS VARCHAR(50)
BEGIN
DECLARE NAME VARCHAR(50);
SELECT `userName` FROM `user` WHERE `email` = email
INTO `name`;
RETURN `name`;
END ;;