1 000 FAQ, 500 tutoriels et vidéos explicatives. Ici, il n'y a que des solutions !
Créer une fonction MySQL sur Serveur Cloud
Ce guide détaille l'usage de DELIMITER
pour créer des fonctions MySQL sur Serveur Cloud Infomaniak.
Préambule
- Lors de la création de fonctions ou de procédures stockées dans MySQL, il est crucial de comprendre le rôle des délimiteurs.
- L'utilisation correcte des délimiteurs est essentielle pour éviter les erreurs de syntaxe qui peuvent survenir en raison de la présence de plusieurs instructions SQL dans une seule définition de fonction ou de procédure.
Comprendre le DĂ©limiteur
Un délimiteur est un caractère ou une séquence de caractères utilisés pour séparer les instructions SQL dans un script. Par défaut, MySQL utilise le point-virgule (;
) comme délimiteur. Cependant, lorsqu'on crée des fonctions, des procédures stockées ou des déclencheurs qui contiennent plusieurs instructions SQL, il est nécessaire de changer temporairement le délimiteur afin d'éviter des erreurs de syntaxe.
Lorsque vous créez une fonction, procédure ou déclencheur, vous avez souvent besoin d'utiliser plusieurs instructions SQL à l'intérieur du bloc BEGIN...END
. Le point-virgule (;
) étant également utilisé pour terminer ces instructions internes, MySQL pourrait interpréter le premier point-virgule comme la fin de la définition de la fonction, ce qui entraînerait une erreur de syntaxe. Pour contourner ce problème, vous devez changer le délimiteur pendant la définition de la fonction.
Créer une fonction simple en utilisant des délimiteurs personnalisés
Avant de définir la fonction, vous devez indiquer à MySQL que vous allez utiliser un autre délimiteur. Dans l'exemple ci-dessous, $$
est utilisé comme nouveau délimiteur:
DELIMITER $$
Avec le nouveau délimiteur en place, vous pouvez maintenant définir votre fonction. Le CREATE FUNCTION
inclut le corps de la fonction, où vous pouvez utiliser des instructions SQL internes séparées par des points-virgules sans que cela ne pose problème:
CREATE FUNCTION hello_world()
RETURNS TEXT
LANGUAGE SQL
BEGIN
RETURN 'Hello World';
END;
$$
Dans cet exemple :
CREATE FUNCTION hello_world()
: déclare le début de la définition de la fonctionhello_world
.RETURNS TEXT
: spécifie le type de données que la fonction retourne.LANGUAGE SQL
: indique que le langage utilisé pour la fonction est SQL.BEGIN ... END
: encapsule le code de la fonction. À l'intérieur, le point-virgule est utilisé pour séparer les instructions SQL.RETURN 'Hello World';
: instruction SQL qui renvoie la chaîne de caractèresHello World
.
Après avoir défini la fonction, remettre le délimiteur à son état par défaut (le point-virgule). Cela permet de continuer à exécuter les instructions SQL habituelles dans vos scripts suivants:
DELIMITER ;