Mysql
 sql >> Baza danych >  >> RDS >> Mysql

błąd separatora mysql

Usunąłbym średnik po END .

    ...
END
|
DELIMITER ;

Jeśli chodzi o Twój komentarz, nie możesz użyć obecnego ogranicznika podczas deklarowania nowego ogranicznika. Brzmi to mylące, ale zastanów się, czy to zrobisz:

DELIMITER |;

Teraz MySQL pomyślałby, że ogranicznik to „|;” (dwa znaki, rura i średnik). Jeśli się nad tym zastanowisz, DELIMITER musi być traktowane w specjalny sposób przez klienta MySQL. To jedyne stwierdzenie, którego nie można po którym następuje bieżący ogranicznik.

Dlatego ustawiając ogranicznik na potok, zrób tak:

DELIMITER |

Gdy ustawiasz go z powrotem na średnik, zrób tak:

DELIMITER ;

FWIW, uruchomiłem następujące bez błędów w mojej lokalnej testowej bazie danych w 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy instrukcja merge jest dostępna w MySQL?

  2. Instrukcja SQL At-Sign in przed nazwą kolumny

  3. Python łączy się z bazą danych MySQL za pomocą złącza MySQL i przykładu PyMySQL

  4. BŁĄD 1054 (42S22):Nieznana kolumna „‍‍” w „liście pól”

  5. Dlaczego uniksowy czas MySQL zatrzymuje się przed 32-bitowym limitem liczby całkowitej bez znaku?