Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/03/2008, 19:18
Avatar de webbeginner
webbeginner
 
Fecha de Ingreso: noviembre-2004
Mensajes: 241
Antigüedad: 19 años, 5 meses
Puntos: 2
Para que sirve la clausula Delimiter?

por ejemplo en este codigo
que significa , para que sirve?

Código PHP:
DELIMITER $$

DROP PROCEDURE IF EXISTS `test`.`UP_ANIMALSINSERT`$$
CREATE DEFINER=`root`@`localhostPROCEDURE `test`.`UP_ANIMALSINSERT`(OUT _AnimalID INT,_AnimalType VARCHAR(45))
BEGIN
INSERT INTO animals
(AnimalType)
VALUES
(_AnimalType);
SET _AnimalID=LAST_INSERT_ID();
END $$

DELIMITER 

Encontre esto y me confundio un poco
Cita:
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 ;
O sea que en resumen puedo usar ; y me quito de problemas y rollos raros?
saludos
__________________
************************
"La bondad es simple; la maldad, múltiple"