O
DELIMITER
O comando é um cliente de shell MySQL embutido e é reconhecido apenas por esse programa (e pelo MySQL Query Browser). Não é necessário usar DELIMITER
se você executar instruções SQL diretamente por meio de uma API. O objetivo de
DELIMITER
é ajudá-lo a evitar ambiguidade sobre o término da CREATE FUNCTION
declaração, quando a própria declaração pode conter caracteres de ponto e vírgula. Isso é importante no cliente shell, onde, por padrão, um ponto e vírgula encerra uma instrução SQL. Você precisa definir o terminador de instrução para algum outro caractere para enviar o corpo de uma função (ou gatilho ou procedimento). 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
Como a API normalmente permite que você envie uma instrução SQL por vez, não há ambiguidade -- a interface sabe que qualquer ponto e vírgula dentro do corpo de sua definição de função não encerra todo o
CREATE FUNCTION
demonstração. Portanto, não há necessidade de alterar o terminador de instrução com DELIMITER
.