Délimiteurs autres que la valeur par défaut ;
sont généralement utilisés lors de la définition des fonctions, des procédures stockées et déclencheurs dans laquelle vous devez définir plusieurs déclarations. Vous définissez un délimiteur différent, comme $$
celui utilisé pour définir la fin de toute la procédure, mais à l'intérieur de celui-ci, les instructions individuelles se terminent chacune par ;
. De cette façon, lorsque le code est exécuté dans le mysql
client, le client peut dire où se termine la procédure entière et l'exécuter en tant qu'unité plutôt que d'exécuter les instructions individuelles à l'intérieur.
Notez que le DELIMITER
mot-clé est mysql
uniquement une fonction du client de ligne de commande (et de certains autres clients) et non une fonction de langage MySQL standard. Cela ne fonctionnera pas si vous essayez de le transmettre via une API de langage de programmation à MySQL. Certains autres clients comme PHPMyAdmin ont d'autres méthodes pour spécifier un délimiteur autre que celui par défaut.
Exemple:
DELIMITER $$
/* This is a complete statement, not part of the procedure, so use the custom delimiter $$ */
DROP PROCEDURE my_procedure$$
/* Now start the procedure code */
CREATE PROCEDURE my_procedure ()
BEGIN
/* Inside the procedure, individual statements terminate with ; */
CREATE TABLE tablea (
col1 INT,
col2 INT
);
INSERT INTO tablea
SELECT * FROM table1;
CREATE TABLE tableb (
col1 INT,
col2 INT
);
INSERT INTO tableb
SELECT * FROM table2;
/* whole procedure ends with the custom delimiter */
END$$
/* Finally, reset the delimiter to the default ; */
DELIMITER ;
Toute tentative d'utilisation DELIMITER
avec un client qui ne le prend pas en charge entraînera son envoi au serveur, ce qui signalera une erreur de syntaxe. Par exemple, en utilisant PHP et MySQLi:
$mysqli = new mysqli('localhost', 'user', 'pass', 'test');
$result = $mysqli->query('DELIMITER $$');
echo $mysqli->error;
Erreurs avec:
Vous avez une erreur dans votre syntaxe SQL; vérifiez le manuel qui correspond à votre version de serveur MySQL pour la bonne syntaxe à utiliser à côté de 'DELIMITER $$' à la ligne 1
Michael Berkowski
la source
L'instruction DELIMITER change le délimiteur standard qui est le point-virgule (;) en un autre. Le délimiteur passe du point-virgule (;) en double barre oblique //.
Pourquoi devons-nous changer le délimiteur?
Parce que nous voulons transmettre la procédure stockée, les fonctions personnalisées, etc. au serveur dans son ensemble plutôt que de laisser l'outil mysql interpréter chaque instruction à la fois.
la source
Lorsque vous créez une routine stockée contenant un
BEGIN...END
bloc, les instructions dans le bloc se terminent par un point-virgule(;)
. Mais l'CREATE PROCEDURE
instruction a également besoin d'un terminateur. Il devient donc ambigu de savoir si le point-virgule dans le corps de la routine se termineCREATE PROCEDURE
ou termine l'une des instructions dans le corps de la procédure.La manière de résoudre l'ambiguïté est de déclarer une chaîne distincte (qui ne doit pas apparaître dans le corps de la procédure) que le client MySQL reconnaît comme le véritable terminateur de l'
CREATE PROCEDURE
instruction.la source
Le délimiteur est le caractère ou la chaîne de caractères que vous utiliserez pour indiquer au client MySQL que vous avez fini de taper une instruction Sql.
la source
Vous définissez un DELIMITER pour indiquer au client mysql de traiter les instructions, les fonctions, les procédures stockées ou les déclencheurs comme une instruction entière. Normalement, dans un fichier .sql, vous définissez un DELIMITER différent comme $$. La commande DELIMITER est utilisée pour changer le délimiteur standard des commandes MySQL (ie;). Comme les instructions dans les routines (fonctions, procédures stockées ou déclencheurs) se terminent par un point-virgule (;), pour les traiter comme une instruction composée, nous utilisons DELIMITER. S'il n'est pas défini lors de l'utilisation de différentes routines dans le même fichier ou ligne de commande, cela donnera une erreur de syntaxe.
Notez que vous pouvez utiliser une variété de caractères non réservés pour créer votre propre délimiteur personnalisé. Vous devriez éviter d'utiliser le caractère anti-slash (\) car c'est le caractère d'échappement pour MySQL.
DELIMITER n'est pas vraiment une commande de langage MySQL, c'est une commande client.
Exemple
la source
DELIMITER pour dire au client mysql de traiter les instructions, les fonctions, les procédures stockées ou les déclencheurs comme une instruction entière. Normalement dans un fichier. sql vous définissez un autre DELIMITER comme $$. La commande DELIMITER est utilisée pour changer le délimiteur standard des commandes MySQL
la source
Le délimiteur est un caractère en SQL qui est utilisé pour séparer les éléments de données dans une base de données. Il identifie le début et la fin de la chaîne de caractères. Généralement, le délimiteur utilisé dans SQL est «;».
la source