-1

メールサーバー用に MySQL 関数をセットアップしようとしています。MySQL のバージョンは 5.1.66 です。

このクエリの何が問題なのかはわかっています。RETURN DOUBLEREADS 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 $$
4

2 に答える 2

2

後でこれに出くわした人のために:

キーワード にもともと構文エラーがありましたPROCEDURE。決勝が抜けていましたE

MySQL の構文によれば、CREATE PROCEDUREdoes ではありませんRETURN。ただし、構文で をCREATE FUNCTION許可しRETURNます。参照: http://dev.mysql.com/doc/refman/5.1/en/create-procedure.html

于 2013-07-09T19:29:38.523 に答える
0

最初の行の PROCEDURE" に "E" がありません

于 2013-07-09T18:56:11.013 に答える