MySQL CREATE FUNCTION Синтаксис - PullRequest
       3

MySQL CREATE FUNCTION Синтаксис

39 голосов
/ 19 июля 2011

Я пытаюсь создать функцию в 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

Я запускаю этот оператор создания в phpMyAdmin.Что не так с этой функцией?

Ответы [ 2 ]

70 голосов
/ 19 июля 2011

Вы должны переопределить ваш ; разделитель чем-то вроде $$, чтобы избежать такого рода ошибок.

После определения функции вы можете установить разделитель обратно на ;.

Это должно работать:

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 ;
20 голосов
/ 19 июля 2013

Синтаксис MySQL create function:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...