Mysql
 sql >> Datenbank >  >> RDS >> Mysql

mysql-Trennzeichenfehler

Ich würde das Semikolon nach END entfernen .

    ...
END
|
DELIMITER ;

Zu Ihrem Kommentar können Sie das aktuelle Trennzeichen nicht verwenden, wenn Sie ein neues Trennzeichen deklarieren. Das klingt verwirrend, aber überlegen Sie, ob Sie Folgendes tun:

DELIMITER |;

Jetzt würde MySQL denken, dass das Trennzeichen "|;" ist. (zwei Zeichen, ein senkrechter Strich und ein Semikolon). Wenn Sie darüber nachdenken, DELIMITER muss vom MySQL-Client auf besondere Weise behandelt werden. Es ist die einzige Anweisung, die nicht kann gefolgt vom aktuellen Trennzeichen.

Wenn Sie also das Trennzeichen auf Pipe setzen, tun Sie dies:

DELIMITER |

Wenn Sie es wieder auf Semikolon setzen, gehen Sie wie folgt vor:

DELIMITER ;

FWIW, ich habe Folgendes ohne Fehler in meiner lokalen Testdatenbank unter MySQL 5.0.75 ausgeführt:

DROP FUNCTION IF EXISTS PersonName;
DELIMITER |

CREATE FUNCTION PersonName( personID SMALLINT )
RETURNS CHAR(20)
BEGIN
  DECLARE pname CHAR(20) DEFAULT '';
  SELECT name INTO pname FROM family WHERE ID=personID;
  RETURN pname;
END
|
DELIMITER ;