在phpmyadmin中创建函数错误

时间:2014-03-26 23:06:54

标签: php mysql sql

当我尝试使用他们的电子邮件创建一个从用户表中检索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 ;;

1 个答案:

答案 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 ;;