sql >> Base de Datos >  >> RDS >> Mysql

Crear función a través de MySQLdb

El DELIMITER El comando es un cliente shell de MySQL incorporado, y solo lo reconoce ese programa (y MySQL Query Browser). No es necesario usar DELIMITER si ejecuta sentencias SQL directamente a través de una API.

El propósito de DELIMITER es para ayudarlo a evitar la ambigüedad sobre la terminación de CREATE FUNCTION declaración, cuando la declaración en sí puede contener caracteres de punto y coma. Esto es importante en el cliente de shell, donde, de forma predeterminada, un punto y coma termina una instrucción SQL. Debe configurar el terminador de declaración en algún otro carácter para enviar el cuerpo de una función (o disparador o procedimiento).

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

Dado que la API generalmente le permite enviar una declaración SQL a la vez, no hay ambigüedad:la interfaz sabe que cualquier punto y coma dentro del cuerpo de la definición de su función no termina todo CREATE FUNCTION declaración. Así que no hay necesidad de cambiar el terminador de declaración con DELIMITER .