Los delimitadores que no sean los predeterminados ;
se usan generalmente al definir funciones, procedimientos almacenados y disparadores en los que debe definir varias declaraciones. Usted define un delimitador diferente, como el $$
que se usa para definir el final de todo el procedimiento, pero dentro de él, cada declaración finaliza ;
. De esa manera, cuando el código se ejecuta en elmysql
cliente, el cliente puede decir dónde termina todo el procedimiento y ejecutarlo como una unidad en lugar de ejecutar las declaraciones individuales en su interior.
Tenga en cuenta que la DELIMITER
palabra clave es una función del mysql
cliente de línea de comandos (y algunos otros clientes) solamente y no una característica normal del lenguaje MySQL. No funcionará si intentas pasarlo a través de un lenguaje de programación API a MySQL. Algunos otros clientes como PHPMyAdmin tienen otros métodos para especificar un delimitador no predeterminado.
Ejemplo:
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 ;
Si intenta utilizarlo DELIMITER
con un cliente que no lo admite, lo enviará al servidor, que informará un error de sintaxis. Por ejemplo, usando PHP y MySQLi:
$mysqli = new mysqli('localhost', 'user', 'pass', 'test');
$result = $mysqli->query('DELIMITER $$');
echo $mysqli->error;
Errores con:
Tiene un error en su sintaxis SQL; consulte el manual que corresponde a la versión de su servidor MySQL para conocer la sintaxis correcta que se debe usar cerca de 'DELIMITER $$' en la línea 1
La instrucción DELIMITER cambia el delimitador estándar que es punto y coma (;) a otro. El delimitador se cambia del punto y coma (;) a barras dobles //.
¿Por qué tenemos que cambiar el delimitador?
Porque queremos pasar el procedimiento almacenado, las funciones personalizadas, etc. al servidor en su conjunto en lugar de dejar que la herramienta mysql interprete cada declaración a la vez.
fuente
Cuando crea una rutina almacenada que tiene un
BEGIN...END
bloque, las declaraciones dentro del bloque terminan con punto(;)
y coma . Pero laCREATE PROCEDURE
declaración también necesita un terminador. Por lo tanto, resulta ambiguo si el punto y coma dentro del cuerpo de la rutina terminaCREATE PROCEDURE
o termina una de las declaraciones dentro del cuerpo del procedimiento.La forma de resolver la ambigüedad es declarar una cadena distinta (que no debe ocurrir dentro del cuerpo del procedimiento) que el cliente MySQL reconoce como el verdadero terminador de la
CREATE PROCEDURE
declaración.fuente
El delimitador es el carácter o cadena de caracteres que usará para decirle al cliente MySQL que ha terminado de escribir una declaración SQL.
fuente
Usted define un DELIMITADOR para decirle al cliente mysql que trate las declaraciones, funciones, procedimientos almacenados o disparadores como una declaración completa. Normalmente en un archivo .sql establece un DELIMITADOR diferente como $$. El comando DELIMITER se usa para cambiar el delimitador estándar de los comandos MySQL (es decir,). Como las declaraciones dentro de las rutinas (funciones, procedimientos almacenados o disparadores) terminan con un punto y coma (;), para tratarlas como una declaración compuesta, usamos DELIMITER. Si no se define cuando se utilizan diferentes rutinas en el mismo archivo o línea de comando, dará un error de sintaxis.
Tenga en cuenta que puede usar una variedad de caracteres no reservados para hacer su propio delimitador personalizado. Debe evitar el uso del carácter de barra diagonal inversa (\) porque ese es el carácter de escape para MySQL.
DELIMITER no es realmente un comando de lenguaje MySQL, es un comando de cliente.
Ejemplo
fuente
DELIMITADOR para decirle al cliente mysql que trate las declaraciones, funciones, procedimientos almacenados o disparadores como una declaración completa. Normalmente en a. archivo sql establece un DELIMITADOR diferente como $$. El comando DELIMITER se usa para cambiar el delimitador estándar de los comandos MySQL
fuente
El delimitador es un carácter en SQL que se usa para separar los elementos de datos en una base de datos. Identifica el principio y el final de la cadena de caracteres. En general, el delimitador utilizado en SQL es ';'.
fuente