Синтаксис MySQL CREATE FUNCTION
Я пытаюсь создать функцию в MySQL:
Вот код SQL:
CREATE FUNCTION F_Dist3D (x1 decimal, y1 decimal)
RETURNS decimal
DETERMINISTIC
BEGIN
DECLARE dist decimal;
SET dist = SQRT(x1 - y1);
RETURN dist;
END;
Я получаю следующую ошибку:
#1064 - You have an error in your SQL syntax;
check the manual that corresponds to your MySQL
server version for the right syntax to use near '' at line 10
Я запускаю этот оператор create в phpMyAdmin. Что не так с этой функцией?
Ответы
Ответ 1
Вы должны переопределить разделитель ;
с чем-то вроде $$
, чтобы избежать такого рода ошибок.
После определения функции вы можете установить разделитель на ;
.
Это должно работать:
DELIMITER $$
CREATE FUNCTION F_Dist3D (x1 decimal, y1 decimal)
RETURNS decimal
DETERMINISTIC
BEGIN
DECLARE dist decimal;
SET dist = SQRT(x1 - y1);
RETURN dist;
END$$
DELIMITER ;
Ответ 2
MySQL создает синтаксис функции:
DELIMITER //
CREATE FUNCTION GETFULLNAME(fname CHAR(250),lname CHAR(250))
RETURNS CHAR(250)
BEGIN
DECLARE fullname CHAR(250);
SET fullname=CONCAT(fname,' ',lname);
RETURN fullname;
END //
DELIMITER ;
Используйте эту функцию в своем запросе
SELECT a.*,GETFULLNAME(a.fname,a.lname) FROM namedbtbl as a
SELECT GETFULLNAME("Biswarup","Adhikari") as myname;
Посмотрите это видео, как создать функцию mysql и как использовать в своем запросе
Создать учебное пособие по программе Mysql