MySQL函数中的语法错误

时间:2013-07-09 18:53:50

标签: mysql sql phpmyadmin mysql-error-1064

我正在尝试为我的邮件服务器设置MySQL功能。 MySQL版本是5.1.66。

我知道这个查询有什么问题。我还尝试使用RETURN DOUBLEREADS SQL DATADETERMINISTIC,但都没有帮助。

我正在使用PhpMyAdmin。分隔符设置为$$。但我得到的只是一个神秘的错误信息:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TEXT CHARSET utf8 READS SQL DATA BEGIN DECLARE mygoto VARCHAR(25' at line 3

我的代码:

CREATE PROCEDURE `get_email_alias`(
myemail VARCHAR(255)
) RETURNS TEXT CHARSET utf8
READS SQL DATA

BEGIN

DECLARE mygoto VARCHAR(255);
DECLARE sdomain VARCHAR(255);
DECLARE ddomain VARCHAR(255);

SELECT SUBSTRING(myemail, INSTR(myemail, '@')+1) INTO sdomain;

SELECT target_domain
FROM alias_domain
WHERE alias_domain = sdomain
AND active = 1
LIMIT 1
INTO ddomain;

IF ddomain IS NOT NULL THEN
SELECT REPLACE(myemail, sdomain, ddomain) INTO myemail;
END IF;
SELECT goto
FROM alias
WHERE address = myemail
AND active = 1
LIMIT 1
INTO mygoto;

IF mygoto IS NOT NULL THEN
RETURN mygoto;
END IF;

RETURN null;
END $$

2 个答案:

答案 0 :(得分:2)

对于后来遇到这种情况的任何人:

关键字PROCEDURE最初存在语法错误。它错过了最后的E

根据MySQL语法,CREATE PROCEDURERETURN。但是,CREATE FUNCTION确实允许语法中的RETURN。参考:http://dev.mysql.com/doc/refman/5.1/en/create-procedure.html

答案 1 :(得分:0)

第一行的

程序“缺少”E“