我試圖爲我的郵件服務器設置一個MySQL函數。 MySQL版本是5.1.66。MySQL函數中的語法錯誤
我知道這個查詢有什麼問題。我也嘗試過RETURN DOUBLE
,READS SQL DATA
和DETERMINISTIC
但他們都沒有幫助。
我正在使用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 $$
程序拼寫錯誤。 – BLaZuRE
更正。 Post中的新錯誤。 – waflija
如果你看看[MySQL語法](http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html),那麼CREATE PROCEDURE'不會在'CREATE FUNCTION'時產生'RETURN'確實。 – BLaZuRE