In MySQL gespeicherte Funktionen

Die in MySQL gespeicherten Funktionen werden verwendet, um Berechnungen oder Operationen mit Registern und Datenfeldern zu kapseln, die einer SQL-Abfrage entnommen wurden und allgemeine Aufgaben oder Geschäftsregeln sind.

Ein großer Vorteil ist, dass sie wiederverwendbar sind und die Programmiersprache, in der die Funktionen entwickelt werden, über SQL-Anweisungen und bedingte oder sich wiederholende Strukturen erfolgt.

Im Gegensatz zu einer gespeicherten Prozedur können Sie eine in SQL-Anweisungen gespeicherte Funktion verwenden, bei der ein Ausdruck zum Erstellen bedingter Regeln verwendet wird.

Schauen wir uns ein Beispiel an, in dem wir eine Datenbank für eine Schule erstellen:

 DATENBANK ERSTELLEN "Schule" 

Als nächstes erstellen wir eine Tabelle mit Notizen der Schülerprüfungen

 - - Tabellenstruktur für die Tabelle `notasexamenes` - CREATE TABLE `notasexamenes` ( `id` INT (11) NICHT NULL AUTO_INCREMENT, `idalumno` INT (11) NICHT NULL, `idmateria` INT (11) NICHT NULL, `note1` DECIMAL (10,2) NICHT NULL, `note2` DECIMAL (10,2) NICHT NULL, `note3` DECIMAL (10,2) NICHT NULL, `average` DECIMAL (10,2) NICHT NULL, `state` VARCHAR (100) NULL DEFAULT NULL, PRIMARY KEY (`id`) ) COLLATE = 'latin1_swedish_ci' ENGINE = InnoDB - Indizes der Tabelle "Notasexamene" - ALTER TABELLE "Notasexamene" ADD PRIMARY KEY (`id`); Als nächstes fügen wir der Tabelle notasexamenes einige Daten hinzu - Daten für die Tabelle `notasexamenes` sichern INSERT IN `notasexamenes` (` id`, `idalumno`,` idmateria`, `nota1`,` nota2`, `nota3`,` average`, `estado`) WERTE (1, 1000, 1, '8.00', '9.25', '7.00', '0.00', ''), (2, 1001, 1, '6.33', '8.50', '8.00', '0.00', ''), (3, 1002, 1, '10 .00 ',' 7.50 ',' 8.33 ',' 0.00 ',' '), (4, 1003, 2, '4.50', '2.00', '5.50', '0.00', ''), (5, 1004, 1, '3,50', '2,00', '4,00', '0,00', ''); 

panta01.jpg

Als Nächstes erstellen wir eine gespeicherte Funktion, die die gesamte Notentabelle durchläuft, die Durchschnittsnote für jeden Schüler pro Fach berechnet und die Tabelle aktualisiert, um anzuzeigen, ob sie genehmigt oder veraltet ist.

See also  So verwenden Sie das netcat-Netzwerk-Tool

Wir können die Funktion aus Phpmyadmin oder einem beliebigen Editor erstellen, der das Schreiben von SQL-Code ermöglicht.

panta02.jpg

 CREATE DEFINER = `root` @` localhost` PROCEDURE `berechne Durchschnitt` () SPRACHE SQL NICHT DETERMINISTISCH ENTHÄLT SQL SQL SECURITY DEFINER KOMMENTAR '' BEGINNEN / * Ich deklariere Variablen für die Funktion * / DECLARE final BOOL DEFAULT FALSE; DECLARE id INT; DECLARE student INT; DECLARE INT matter; DECLARE nota1 FLOAT; DECLARE note2 FLOAT; DECLARE nota3 FLOAT; DECLARE prom FLOAT; / * Ich deklariere ein Recordset oder einen Cursor mit den Daten der SQL-Abfrage * / DECLARE rslista CURSOR FOR SELECT id, idalumno, idmateria, nota1, nota2, nota3 von notasexamenes; / * Deklariere eine Variable, um das Ende einer Wiederholungsschleife zu erkennen DECLARE CONTINUE HANDLER FÜR SQLSTATE '02000' SET final = TRUE; / * Ich öffne das Recordset, um den Datenpfad mit einer Schleife zu starten * / OPEN rslista; Schleife: LOOP FETCH rslista INTO id, student, subject, note1, note2, note3; / * Ich berechne den Durchschnitt * / setze prom = (note1 + note2 + note3) / 3; / * Ich aktualisiere ständig die Tabelle * / update notasexamenes set average = d wobei idalumno = student und idmateria = subject; / * Wenn die Note größer oder gleich 7 ist, aktualisiere ich den Status als Genehmigt aber der Staat wird veraltet sein * / WENN PROM> = 7 DANN update notasexamenes set state = 'Approved' wobei idalumno = student und idmateria = subject; ELSE update notasexamenes set state = 'Abgelehnt' wobei idalumno = student und idmateria = subject; END IF; WENN DANN endgültig CLOSE rslista; LEAVE-Schleife; END IF; END LOOP; ENDE 

Dann können wir die Funktion mit dem folgenden Befehl ausführen:

 CALL `Durchschnitt berechnen` () 

Das Ergebnis ist die automatische Aktualisierung der Durchschnitts- und Zustandsspalten.

panta03.jpg

In MySQL gespeicherte Funktionen werden normalerweise für Berechnungen und Operationen verwendet, während gespeicherte Prozeduren normalerweise für die Ausführung von Geschäftsregeln verwendet werden.

See also  So erstellen Sie Excel 2016-Grafiken im Detail

Die Funktionen wirken sich normalerweise nicht auf die Struktur der Datenbank aus. Um jedoch Berechnungen durchzuführen, ein Ergebnis zu vergleichen und zurückzugeben oder Daten in einer Tabelle der Datenbank zu ändern, können wir auch einen Auslöser zur Steuerung oder Überwachung erstellen die Änderungen, die eine Funktion vornimmt.

administrator

Leave a Reply

Your email address will not be published. Required fields are marked *