sql >> Database >  >> RDS >> Mysql

mysql scheidingsteken fout

Ik zou de puntkomma verwijderen na END .

    ...
END
|
DELIMITER ;

Wat betreft uw opmerking, u kunt het huidige scheidingsteken niet gebruiken bij het declareren van een nieuw scheidingsteken. Dat klinkt verwarrend, maar overweeg of u dit doet:

DELIMITER |;

Nu zou MySQL denken dat het scheidingsteken "|;" is (twee karakters, een pijp en een puntkomma). Als je erover nadenkt, DELIMITER moet op een speciale manier worden behandeld door de MySQL-client. Het is de enige verklaring die niet kan worden gevolgd door het huidige scheidingsteken.

Dus als je het scheidingsteken op pipe instelt, doe dan dit:

DELIMITER |

Als u het terugzet naar een puntkomma, doet u dit:

DELIMITER ;

FWIW, ik heb het volgende zonder fouten uitgevoerd in mijn lokale testdatabase op 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. Symfony3 - SQLSTATE [HY000] [2002] Geen dergelijk bestand of map

  2. SQL Server 2014 uitvoeren op een virtuele Azure-machine

  3. Php Mysql zoeken tussen twee datums

  4. Hoe de ORA-00936 ontbrekende uitdrukking op te lossen?