sql >> Base de Datos >  >> RDS >> Mysql

error del delimitador mysql

Quitaría el punto y coma después de END .

    ...
END
|
DELIMITER ;

Con respecto a su comentario, no puede usar el delimitador actual al declarar un nuevo delimitador. Eso suena confuso, pero considera si haces esto:

DELIMITER |;

Ahora MySQL pensaría que el delimitador es "|;" (dos caracteres, una barra vertical y un punto y coma). Si lo piensas, DELIMITER debe ser tratado de manera especial por el cliente MySQL. Es la única declaración que no puede ser seguido por el delimitador actual.

Entonces, cuando configure el delimitador para canalizar, haga esto:

DELIMITER |

Cuando vuelva a establecerlo en punto y coma, haga lo siguiente:

DELIMITER ;

FWIW, ejecuté lo siguiente sin error en mi base de datos de prueba local en 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 ;