Die Funktionen sind den gespeicherten Prozeduren (Stored Procedures, SP) sehr ähnlich, der Unterschied liegt in einigen Details, der wichtigsten, die nur einen Wert zurückgeben, wenn ein SP mehr als einen zurückgeben kann. Außerdem benötigen wir keine Variable, um den Wert zu speichern, der daraus resultiert Das ist viel einfacher in einem SELECT zu verwenden.
- Das Abfragefeld , in das wir die Funktion schreiben können.
- Die Änderung des Trennzeichens.
- Der Bearbeitungs- und Manipulationsmechanismus der Funktion.
Sehen wir uns an, wie Sie eine Funktion anhand eines Beispiels definieren:
CREATE FUNCTION get_country_name (param_country_code CHAR (2)) RÜCKGABE VARCHAR (50) Liest SQL-Daten BEGINNEN DECLARE var_country_name VARCHAR (50) DEFAULT 'not found'; Beschreibung auswählen AUS dem Land WHERE code = param_country_code INTO var_country_name; RETURN var_country_name; ENDE //
Wie wir sehen, ist die Syntax der des SP sehr ähnlich, nur dass wir hier nicht die Werte von IN und OUT definieren, sondern die Parameter, die einen einzelnen Wert eingeben und deklarieren, der die RETURN sein wird .
Wenn wir zum Abschnitt Routinen auf der Strukturseite in der Datenbank gehen, sehen wir, dass sich dies wie folgt widerspiegelt:
Nachdem wir unsere Funktion erstellt haben, sehen wir uns an, wie wir sie testen können. Mit dieser Funktion testen wir, was sie bewirkt, indem wir eine Ländertabelle abfragen und den Namen eines Landes zurückgeben, wenn wir nach einem Code fragen. Wenn wir ihn nicht finden, finden wir keinen zurück :
SELECT CONCAT ('ca->', get_country_name ('ca'), ', zz->', get_country_name ('zz')) als Test;
Wir treffen einfach eine Auswahl mit einem CONCAT, um die Ergebnisse in einer Kette zusammenzufassen, und wir erhalten Folgendes:
ca-> Kanada, zz-> nicht gefunden
Wie wir sehen, ist es viel einfacher als die Abfrage zu erstellen, die jedes Land separat konsultiert.
Mal sehen, wie man einen Trigger erstellt :
CREATE TRIGGER after_book_insert AFTER INSERT ON book FÜR JEDE REIHE BEGINNEN UPDATE-Autor 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 // im Abfragefeld definieren, damit wir alle Anweisungen des Triggers aufnehmen können. Im Beispiel verknüpfen wir es mit dem After Insert , dh nach dem Einfügen, und führen dann die definierte Aktion aus Auf diese Weise kann die Datenbank Aktionen bei deren Ausführung autonom verwalten.
Sobald der Trigger erstellt wurde, sehen wir, dass er auf der Strukturseite der Tabelle verfügbar ist: