当我尝试使用他们的电子邮件创建一个从用户表中检索userName的函数时,它给了我这个无用的错误:
#1064 - 您的SQL语法出错;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 在'DECLARE name VARCHAR附近; BEGIN从中选择
userName
AS名称user
第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 ;;
答案 0 :(得分:1)
嗯,首先,varchar需要有两个地方缺少的长度。此外,您需要选择变量并返回变量,因为您无法返回结果集。此外,您应该转义名称,并且您无需为列进行别名,因为您仍在选择。所以,你的代码应该是这样的:
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 ;;