Delimiter en MySQL
Ya he hablado de lo confuso que me resultaba cómo hacer un Stored Procedure en MySQL en comparación con MS-SQL Server que es mi habitual.
Un paso más en su comprensión, es la palabra “DELIMITER”.
Lo habitual para separar una instrucción de otra, es finalizarlas con un “;” pero un SP, al igual que un Trigger, estan formados por varias instrucciones, por lo tanto, antes de comenzar su definición, debes especificar qué caracter delimita (o separa) un SP o un Trigger del siguiente SP o Trigger.
La cuestión metalógica será, si cambias el delimitador de instrucciones por excelencia, para separar un conjunto de instrucciones agrupadas en un objeto (SP o Trigger) de otro objeto, cómo es que este delimitador sigue siendo necesario y funcional dentro de este conjunto de instrucciones? Entonces, para qué cambiarlo? y sobre todo, para qué restaurarlo después? Me parece una manera de marear la perdiz.
DELIMITER | CREATE TRIGGER testref BEFORE INSERT ON test1 FOR EACH ROW BEGIN INSERT INTO test2 SET a2 = NEW.a1; DELETE FROM test3 WHERE a3 = NEW.a1; UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1; END; | DELIMITER ;

Mejor explicado que la propia pagina de MySQL. Gracias por ese dato. Por lo que veo funciona como el GO de MSSQL
tengo el siguiente codigo pero NO funciona
delimiter $$
drop procedure if exists `db_qv`.`parametros_select` $$
create procedure `db_qv`.`parametros_select`
(in icodigo varchar(30))
begin
select glosa
,valor
from parametros
where codigo = upper(icodigo);
end $$
delimiter ;
no me acepta el delimiter, tengo la version 5.0.91-community
sera por la version?, o algo estoy haciendo mal?, saludos
A si de pronto, no sé qué decirte
¿Porqué no pruebas con un delimiter que sea solo un carácter?
Hola.
Muchas gracias por este dato.
¿Oracle no utiliza algo parecido? O sí?
Gracias.
Hola a todos
Tenia el problema del error de sintaxis, probe con poner un DELIMITER de solo un caracter y listo
Gracias por el tip
Pues tienes razon, pero supongo que lo pensaron asi para hacer que las consultas de creacion de procedimientos sean “leibles” para la linea de comando y evitarse de reconstruir todo el modelo de sintaxis existente (y asi evitar incompatibilidades con las versiones anterioes).
Yo tambien me siento incomodo al tener que cambiar el delimitador, pero me he acostumbrado a ello, con Workbench no se hace muy compleja la cosa.
Hay cientos de cosas que odio de SQL Server pero tambien me acostumbre a ellas, creo que es cuestion de costumbre.