Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Criar função através do MySQLdb


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 .