0

PhpMyAdmin で次のコードを実行しようとすると、5 行目の if 句の先頭で #1064 構文エラーが発生します。

DELIMITER ;
CREATE DEFINER=`root`@`localhost` FUNCTION `ANREDE`(geschlecht enum('m','w'), vorname VARCHAR(255), nachname VARCHAR(255)) RETURNS varchar(1023) CHARSET latin1
    DETERMINISTIC
BEGIN
     IF geschlecht = 'm' THEN RETURN CONCAT_WS('',CONCAT_WS(' ','Sehr geehrter Herr',vorname,nachname),',');
     ELSE RETURN CONCAT_WS('',CONCAT_WS(' ','Sehr geehrte Frau',vorname,nachname),',');
END IF;
    END

if 句が正しいように思えます - 何がそのようなエラーを引き起こす可能性がありますか?

4

2 に答える 2

0

関数を使用するDELIMITERか、関数を書き直して、そのように1つのステートメント関数にすることができます

CREATE FUNCTION `ANREDE`
(
  geschlecht enum('m','w'), 
  vorname VARCHAR(255), 
  nachname VARCHAR(255)
) 
RETURNS VARCHAR(1023) CHARSET latin1
DETERMINISTIC
  RETURN CONCAT
          (CONCAT_WS(' ', 
                     IF(geschlecht = 'm', 
                        'Sehr geehrter Herr', 
                        'Sehr geehrte Frau'), 
                     vorname, 
                     nachname),
          ',');

これがSQLFiddle のデモです。

于 2013-06-09T09:12:46.377 に答える