Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Erstellen Sie eine Funktion über MySQLdb

Das DELIMITER Der Befehl ist ein eingebauter MySQL-Shell-Client und wird nur von diesem Programm (und dem MySQL-Abfrage-Browser) erkannt. Es ist nicht notwendig, DELIMITER zu verwenden wenn Sie SQL-Anweisungen direkt über eine API ausführen.

Der Zweck von DELIMITER soll Ihnen dabei helfen, Unklarheiten bezüglich der Beendigung der CREATE FUNCTION zu vermeiden -Anweisung, wenn die Anweisung selbst Semikolons enthalten kann. Dies ist im Shell-Client wichtig, wo standardmäßig ein Semikolon eine SQL-Anweisung abschließt. Sie müssen das Abschlusszeichen der Anweisung auf ein anderes Zeichen setzen, um den Hauptteil einer Funktion (oder eines Triggers oder einer Prozedur) zu übermitteln.

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

Da die API Ihnen normalerweise erlaubt, jeweils nur eine SQL-Anweisung zu übermitteln, gibt es keine Zweideutigkeit – die Schnittstelle weiß, dass Semikolons innerhalb des Hauptteils Ihrer Funktionsdefinition nicht die gesamte CREATE FUNCTION beenden Erklärung. Es besteht also keine Notwendigkeit, das Abschlusszeichen der Anweisung mit DELIMITER zu ändern .