DELIMITER $$ DROP FUNCTION IF EXISTS genPerson$$ CREATE FUNCTION genPerson(name varchar(20)) RETURNS varchar(50) BEGIN DECLARE str VARCHAR(50) DEFAULT ''; SET @tableName=name; SET str=CONCAT('create table ', @tableName,'(id int, name varchar(20));'); return str; END $$ DELIMITER ;
Was das SQL im obigen Bild betrifft
(1) DELIMITER $$ definiert das Abschlusszeichen. Das Standard-Abschlusszeichen von MySQL ist ein Semikolon, aber im Funktionskörper kann ein Semikolon verwendet werden. Um Konflikte zu vermeiden, müssen zusätzliche Terminatoren definiert werden.
(2) DROP FUNCTION IF EXISTS genPerson$$ Wenn die Funktion genPerson bereits existiert, löschen Sie sie.
(3) CREATE FUNCTION erstellt die Funktion genPerson. Der Parameter der Funktion ist name und der Rückgabewert ist varchar(50).
(4) Der Funktionskörper wird zwischen BEGIN und END platziert.
(5) DECLARE deklariert eine Variable, der str-Typ ist varchar(50) und der Standardwert ist leer.
(6) CONCAT verkettet mehrere Zeichenfolgen.
(7) RETURN gibt die verkettete Zeichenfolge str zurück.
Es ist aus den Ausführungsergebnissen ersichtlich
Erstellen einer Funktion in MySQL, Fehlercode: 1418
Lösung1. Überprüfen Sie, ob die Funktion zum Erstellen aktiviert istDiese Funktion hat weder DETERMINISTISCH noch KEIN SQL. oder liest SQL-Daten in seiner Deklaration und die binäre Protokollierung ist aktiviert (möglicherweise möchten Sie die weniger sichere Variable log_bin_trust_function_creators verwenden). Dies bedeutet, dass die Funktion zum Erstellen einer Funktion nicht aktiviert ist.
show variables like '%func%'; ------------------------------------------- +---------------------------------+-------+ | Variable_name | Value | +---------------------------------+-------+ | log_bin_trust_function_creators | OFF | +---------------------------------+-------
SET GLOBAL log_bin_trust_function_creators = 1;
Das obige ist der detaillierte Inhalt vonSo erstellen Sie eine Funktion in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!