Zurück in MariaDB Server 10.3 haben wir einen neuen SQL-Modus (SQL_MODE=ORACLE) hinzugefügt, um die Kompatibilität mit einer Teilmenge von Oracle PL/SQL zu gewährleisten, einer prozeduralen Erweiterung der Structured Query Language (SQL). Mit der jüngsten Veröffentlichung von MariaDB Community Server 10.6 haben wir unsere Reise fortgesetzt, um die PL/SQL-Kompatibilität von MariaDB zu erweitern, indem wir mehrere Funktionen wie ROWNUM()
hinzugefügt haben , ADD_MONTHS()
und TO_CHAR()
. Dies ist aus mehreren Gründen so cool, aber zunächst einmal bleibt MariaDB die einzige Datenbank, die Open-Source-Oracle-Kompatibilität implementiert, sodass diese Funktionalität für alle verfügbar ist. Um wirklich zu verstehen, was das bedeutet, ist es wichtig, dass wir einen kurzen Schritt zurücktreten, damit Sie wissen, warum Wir haben diesen Weg zunächst eingeschlagen.
Die Macht der prozeduralen und deklarativen Programmierung
Durch die Kombination der Datenbearbeitungsleistung der SQL-Sprache mit prozeduralen Fähigkeiten haben Entwickler eine Fülle aufregender, neuer Möglichkeiten. Mit PL/SQL haben Entwickler die Möglichkeit, SQL-Anweisungen auszuführen, die sich auf den deklarativen Ansatz konzentrieren, „was zu tun ist“, während sie gleichzeitig die Möglichkeit erhalten, den Ablauf von Operationen zu steuern oder „wie es zu tun ist“.
Warte was? OK, betrachten Sie das Folgende als traditionell SQL-Anweisung.
SELECT id, name, has_kids FROM friends;
Einfach, elegant und effektiv. SQL ist eine schöne Sprache, aber sie hat ihre Grenzen. Was wäre zum Beispiel, wenn Sie die von SELECT
zurückgegebenen Ergebnisse durchlaufen möchten Anweisungsausführung? Und dann, während Sie die Ergebnisse durchgehen, überprüfen Sie jedes Ergebnis mit einer bedingten Anweisung (z. B. wenn has_kids
wahr ist), sodass Sie bestimmte Vorgänge basierend auf diesen Bedingungen ausführen können?
Kurznotiz :Dies ist rein hypothetisch. Ich bin sicher, wenn Sie Freunde mit Kindern und Freunde ohne Kinder haben, behandeln Sie sie alle gleich. Aber für dieses Beispiel nehmen wir an, Sie tun es nicht. OK? OK, cool.
Aber bei all diesen Iterationen und Bedingungen ist es möglich, dass Sie auf einen Fehler stoßen. Wäre es nicht schön, wenn Sie Fehler (d. h. Ausnahmen) direkt auf der Datenbankseite behandeln könnten, ohne zuerst die ursprünglichen Ergebnisse an den zu verarbeitenden Anwendungscode zurückgeben zu müssen? Nun, das ist einfach zu schade, weil Sie einfaches altes SQL verwenden und nichts davon möglich ist.
Keine Angst! Kommen Sie stattdessen mit mir in die wunderbare Welt von PL/SQL!
Durch die Verwendung von etwas, das als PL/SQL-Block bekannt ist, können Sie das SQL, das Sie kennen und lieben, mit den prozeduralen Fähigkeiten kombinieren, die es Ihnen ermöglichen, den Ablauf von Operationen mithilfe von Funktionen wie der Fähigkeit, Variablen zu deklarieren, Bedingungen zu verarbeiten, Schleifen zu steuern Daten durchsuchen, Ausnahmen verwalten und vieles mehr.
PL/SQL-Blöcke werden innerhalb von MariaDB Server verarbeitet, wo die SQL- und prozeduralen Anweisungen analysiert und entsprechend ausgeführt werden.
Ziemlich cool, oder? Es wird so viel besser! Aber zurück zu unserem vorherigen Beispiel. Sie können einen einzigen PL/SQL-Block verwenden, um alles zu erreichen, was ich zuvor angegeben habe.
Zum Beispiel:
DELCARE CURSOR c IS SELECT id, name, has_kids FROM friends; BEGIN FOR friend_row IN c LOOP IF friend_row.has_kids == true THEN /* Do something */ ELSE /* Do something else */ END IF; END LOOP; EXCEPTION WHEN no_data_found THEN /* Handle no data found */ WHEN others THEN /* Handle all other kinds of exceptions */ END;
Weitere Informationen
Starkes Zeug, oder? Nun, dieser Blogbeitrag ist wirklich nur die Spitze des Eisbergs. Eine Kleinigkeit, um Ihren Appetit anzuregen, wenn Sie so wollen. Aber wenn Sie mehr wissen möchten, empfehle ich Ihnen dringend, sich ein Webinar anzusehen, das wir kürzlich präsentiert haben, MariaDB und PL/SQL:Kombinieren der Leistungsfähigkeit von SQL und prozeduralen Anweisungen. Darin gehen wir viel detaillierter darauf ein, warum wir es uns zur Aufgabe gemacht haben, die PL/SQL-Unterstützung hinzuzufügen und zu erweitern, und wir fügen eine Vielzahl von Beispielen und eine Live-Codierungsdemonstration hinzu, die Ihnen einen ersten Eindruck davon vermitteln, wie das geht Sie können PL/SQL innerhalb von MariaDB verwenden! Viel Spaß beim Programmieren, Freunde!