DELIMITER
polecenie jest wbudowanym klientem powłoki MySQL i jest rozpoznawane tylko przez ten program (i przeglądarkę MySQL Query Browser). Nie trzeba używać DELIMITER
jeśli wykonujesz instrukcje SQL bezpośrednio przez API.
Cel DELIMITER
jest pomoc w uniknięciu niejasności dotyczących zakończenia CREATE FUNCTION
oświadczenie, gdy samo oświadczenie może zawierać znaki średnika. Jest to ważne w kliencie powłoki, gdzie domyślnie średnik kończy instrukcję SQL. Musisz ustawić terminator instrukcji na inny znak, aby przesłać treść funkcji (lub wyzwalacza lub procedury).
CREATE FUNCTION trivial_func (radius float)
RETURNS FLOAT
BEGIN
IF radius > 1 THEN
RETURN 0.0; <-- does this semicolon terminate RETURN or CREATE FUNCTION?
ELSE
RETURN 1.0;
END IF;
END
Ponieważ interfejs API zazwyczaj pozwala na przesłanie jednej instrukcji SQL na raz, nie ma dwuznaczności — interfejs wie, że żadne średniki w treści definicji funkcji nie kończą całego CREATE FUNCTION
oświadczenie. Nie ma więc potrzeby zmieniać terminatora instrukcji za pomocą DELIMITER
.