Mysql
 sql >> Base de données >  >> RDS >> Mysql

erreur de délimiteur mysql

Je supprimerais le point-virgule après END .

    ...
END
|
DELIMITER ;

Concernant votre commentaire, vous ne pouvez pas utiliser le délimiteur actuel lors de la déclaration d'un nouveau délimiteur. Cela semble déroutant, mais réfléchissez si vous faites ceci :

DELIMITER |;

Maintenant, MySQL penserait que le délimiteur est "|;" (deux caractères, un tube et un point-virgule). Si vous y réfléchissez, DELIMITER doit être traité d'une manière spéciale par le client MySQL. C'est la seule déclaration qui ne peut pas être suivi du délimiteur actuel.

Ainsi, lorsque vous définissez le délimiteur sur pipe, procédez comme suit :

DELIMITER |

Lorsque vous le remettez au point-virgule, procédez comme suit :

DELIMITER ;

FWIW, j'ai exécuté ce qui suit sans erreur sur ma base de données de test locale sur MySQL 5.0.75 :

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 ;