Mysql
 sql >> Database >  >> RDS >> Mysql

errore del delimitatore mysql

Rimuoverei il punto e virgola dopo END .

    ...
END
|
DELIMITER ;

Per quanto riguarda il tuo commento, non puoi utilizzare il delimitatore corrente quando dichiari un nuovo delimitatore. Sembra confuso, ma considera se lo fai:

DELIMITER |;

Ora MySQL penserebbe che il delimitatore sia "|;" (due caratteri, una pipa e un punto e virgola). Se ci pensi, DELIMITER deve essere trattati in modo speciale dal client MySQL. È l'unica affermazione che non può essere seguito dal delimitatore corrente.

Quindi, quando imposti il ​​delimitatore su pipe, procedi come segue:

DELIMITER |

Quando lo riporti al punto e virgola, procedi come segue:

DELIMITER ;

FWIW, ho eseguito quanto segue senza errori sul mio database di test locale su 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 ;