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

mysql afgrænser fejl

Jeg ville fjerne semikolon efter END .

    ...
END
|
DELIMITER ;

Med hensyn til din kommentar kan du ikke bruge den nuværende afgrænsning, når du erklærer en ny afgrænsning. Det lyder forvirrende, men overvej, om du gør dette:

DELIMITER |;

Nu vil MySQL tro, at afgrænseren er "|;" (to tegn, en pibe og et semikolon). Hvis du tænker over det, DELIMITER skal blive behandlet på en særlig måde af MySQL-klienten. Det er det eneste udsagn, der ikke kan efterfølges af den aktuelle afgrænsning.

Så når du indstiller afgrænseren til pipe, skal du gøre dette:

DELIMITER |

Når du indstiller det tilbage til semikolon, skal du gøre dette:

DELIMITER ;

FWIW, jeg kørte følgende uden fejl på min lokale testdatabase på 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 ;


  1. Sådan opretter du bruger med superbrugerprivilegier i PostgreSQL

  2. PHP - Importer CSV-fil til mysql-database ved hjælp af LOAD DATA INFILE

  3. Mysql-transaktion:commit og rollback

  4. Neo4j Query Language - Cypher