Die Funktionen sind sehr ähnlich zu Gespeicherte Prozeduren (SP), der Unterschied liegt in einigen Details, der Hauptgrund ist, dass sie nur einen Wert zurückgeben, wenn ein SP mehr als einen zurückgeben kann, zusätzlich brauchen wir keine Variable, um den resultierenden Wert zu speichern, so dass es viel einfacher ist, ihn in einem SELECT zu verwenden .
Erstellen einer FunktionDas Ziel einer Funktion ist es, die Logik hinter bestimmten Elementen zu isolieren, damit sie einfacher zu verwenden sind. Auf diese Weise können wir die Datenbank und ihren Betrieb dokumentieren und die Aktionen der Anwendung, die mit der Basis von kommunizieren könnte, vereinfachen Daten. Um eine Funktion zu erstellen, verwenden wir die folgenden Elemente:
- Das Abfragefeld, wo wir die Funktion schreiben können.
- Die Änderung des Trennzeichens.
- Der Bearbeitungs- und Manipulationsmechanismus der Funktion.
Sehen wir uns anhand eines Beispiels an, wie eine Funktion definiert wird:
CREATE FUNCTION get_country_name (param_country_code CHAR (2)) RETURNS VARCHAR (50) LESEN SQL-DATEN BEGIN DECLARE var_country_name VARCHAR (50) DEFAULT 'nicht gefunden'; SELECT description FROM country WHERE code = param_country_code INTO var_country_name; RETURN var_country_name; ENDE //Wie wir sehen, ist die Syntax der des sehr ähnlich SP, nur hier definieren wir nicht die Werte von IN Ja AUS andernfalls definieren wir die Parameter, die sie eingeben, und deklarieren einen einzelnen Wert, der der RÜCKKEHR.
Wenn wir zum Abschnitt von gehen Routinen Auf der Strukturseite in der Datenbank sehen wir es wie folgt widergespiegelt:
Nachdem wir unsere Funktion erstellt haben, sehen wir uns an, wie wir sie testen können. Diese Funktion, die wir als Test verwenden, ist, eine Ländertabelle abzufragen und den Namen eines Landes zurückzugeben, wenn wir nach einem Code fragen, falls nicht finden, es gibt uns zurück nicht gefunden:
SELECT CONCAT ('ca->', get_country_name ('ca'), ', zz->', get_country_name ('zz')) als Test;Wir machen einfach eine Auswahl mit einem CONCAT, um die Ergebnisse in einem String zu verbinden und wir erhalten Folgendes:
ca-> Kanada, zz-> nicht gefundenWie wir sehen, ist dies viel einfacher, als die Abfragen zu erstellen, die jedes Land separat konsultieren wird.
Löst ausDas Löst aus unterscheiden sich von den Funktionen und Gespeicherte ProzedurenDiese müssen nicht vom Benutzer aufgerufen werden, sie treten auf, wenn eine Aktion in der Tabelle ausgeführt wird, mit der sie verknüpft sind, was uns zum anderen Unterschied der Funktionen führt, nämlich dass sie allgemein sind; das Löst aus wenn sie mit einer bestimmten Tabelle verknüpft sind.
Mal sehen, wie man ein erstellt Abzug:
CREATE TRIGGER after_book_insert NACH EINFÜGEN AUF Buch FÜR JEDE ZEILE BEGIN UPDATE author SET total_page_count = total_page_count + NEW.page_count WHERE id = NEW.author_id; ENDE //Wie wir sehen, müssen wir auch ein neues Trennzeichen // in der Abfragebox definieren, damit wir alle Anweisungen des Abzug, im Fall des Beispiels verlinken wir es in der Nach dem Einfügen das heißt, nach dem Einfügen und anschließenden Ausführen der definierten Aktion hilft dies der Datenbank, Aktionen bei deren Durchführung autonom zu verwalten.
Sobald die Abzug Wenn wir zur Tabellenstrukturseite gehen, sehen wir sie verfügbar: