web-dev-qa-db-fra.com

Syntaxe MySQL CREATE FUNCTION

J'essaie de créer une fonction dans MySQL:

Voici le code SQL:

CREATE FUNCTION F_Dist3D (x1 decimal, y1 decimal) 
RETURNS decimal
DETERMINISTIC
BEGIN 
 DECLARE dist decimal;
 SET dist = SQRT(x1 - y1);
 RETURN dist;
END;

Je reçois l'erreur suivante:

#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

J'exécute cette instruction create dans phpMyAdmin. Quel est le problème avec cette fonction?

41
Mel

Vous devez remplacer votre ; délimiteur avec quelque chose comme $$ pour éviter ce genre d'erreur.

Après la définition de votre fonction, vous pouvez redéfinir le délimiteur sur ;.

Cela devrait fonctionner:

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 ;
73
james_bond

MySQL crée la syntaxe de la fonction:

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 ;

Utilisez cette fonction dans votre requête

SELECT a.*,GETFULLNAME(a.fname,a.lname) FROM namedbtbl as a


SELECT GETFULLNAME("Biswarup","Adhikari") as myname;

Regardez cette vidéo comment créer la fonction mysql et comment l'utiliser dans votre requête

Créer un didacticiel vidéo sur la fonction Mysql

21
biswarupadhikari