🚀 Bist Du bereit für eine Karriere im Bereich Data? Finde es in nur 60 Sekunden heraus!

PL/ SQL: Eine leistungsstarke Sprache für das Management von Oracle-Datenbanken

-
4
 Minuten Lesezeit
-

Im Bereich der relationalen Datenbanken zeichnet sich Oracle nicht nur durch die Robustheit seiner Managementsysteme aus, sondern auch durch die fortschrittlichen Werkzeuge, die es Entwicklern bietet, um Datenoperationen zu optimieren, zu automatisieren und zu sichern. Zu diesen Werkzeugen gehört PL/SQL (Procedural Language/Structured Query Language), eine leistungsstarke Programmiersprache, die darauf ausgelegt ist, sich mit SQL, der Standardabfragesprache für relationale Datenbanken, zu integrieren.

PL/ SQL erweitert die Fähigkeiten von SQL um prozedurale Funktionen wie Schleifen, Bedingungen und Ausnahmen und ermöglicht es den Entwicklern, Skripte zur Datenbankverwaltung zu erstellen.

Diese Sprache, die für jeden Entwickler, der mit Oracle arbeitet, unverzichtbar ist, hat das Ziel, Datenbankverwaltungskommandos mit einer prozeduralen Programmiersprache zu kombinieren. Sie bietet umfassendere Programmierlösungen für die Erstellung kritischer Anwendungen, die auf der Oracle-Datenbank basieren.

Gründe, PL/ SQL zu erlernen

PL/SQL ist eine wesentliche Programmiersprache für Entwickler, die Datenbanken verwenden. Es bietet viele Vorteile:

  • Integration mit Oracle Database: PL/ SQL ist darauf ausgelegt, optimal mit der Oracle-Datenbank zu funktionieren, was eine reibungslose und effiziente Interaktion mit den gespeicherten Daten ermöglicht.
  • Integration mit SQL: PL/ SQL ist eine Erweiterung der SQL-Sprache, die es ermöglicht, komplexe SQL-Abfragen zu schreiben, Transaktionen zu verwalten und Daten direkt in derselben Programmierumgebung zu manipulieren.
  • Benutzerfreundlichkeit: Wenn du bereits mit SQL vertraut bist, wirst du die Syntax von PL/ SQL als ziemlich intuitiv empfinden. Der Übergang von SQL zu PL/ SQL ist natürlich für diejenigen, die Erfahrung mit SQL haben, was das Erlernen dieser Sprache erleichtert.
  • Erhöhte Sicherheit: PL/SQL umfasst robuste Sicherheitsfunktionen, die den Datenzugriff kontrollieren. Du kannst sensible Daten schützen, indem du den direkten Zugriff auf Tabellen einschränkst und zusätzliche Sicherheitsebenen schaffst.
  • Automatisierung wiederkehrender Aufgaben: PL/ SQL umfasst Funktionen (Prozeduren, Funktionen, Trigger), die die Automatisierung von Datenbankverwaltungsprozessen ermöglichen. Dies reduziert die Notwendigkeit der manuellen Ausführung wiederkehrender Aufgaben und minimiert menschliche Fehler.
  • Portabilität: PL/ SQL-Codeblöcke können ohne Änderungen zwischen verschiedenen Oracle-Datenbanken verschoben werden.

Verschiedene Anwendungen von PL/ SQL

PL/ SQL bietet eine Vielzahl von Anwendungen in der Datenbankverwaltung. Dank seiner Flexibilität und Leistungsfähigkeit wird es für verschiedene Anwendungsfälle verwendet, wie z.B.:

  • Anwendungsentwicklung: PL/ SQL wird zur Entwicklung von webbasierten Anwendungen verwendet, die auf Oracle-Datenbanken basieren.
  • Automatisierung administrativer Aufgaben: PL/ SQL ermöglicht die Automatisierung von Routineaufgaben in der Datenbankverwaltung und verbessert so die Effizienz und Zuverlässigkeit der Prozesse.
  • Datenbanksicherheit: PL/ SQL ermöglicht den Schutz der Integrität der Datenbank.
  • Analyse und Reporting: PL/ SQL wird zur Erstellung von maßgeschneiderten Berichten verwendet, die spezielle Anforderungen an das Datenmanagement erfüllen. PL/ SQL ermöglicht auch die Generierung von Daten für Dashboards und Visualisierungswerkzeuge.

Grundlagen der PL/ SQL-Syntax

Ein PL/ SQL-Programm ist in Blöcken strukturiert. Jeder Block kann drei Hauptabschnitte enthalten:

  • Deklarationsabschnitt (DECLARE): Dieser Abschnitt wird verwendet, um Variablen, Konstanten, Cursor und andere PL/ SQL-Objekte zu deklarieren. Er ist optional.
  • Ausführungsabschnitt (BEGIN): Dieser Abschnitt enthält die Anweisungen, die ausgeführt werden. Er ist obligatorisch.
  • Ausnahmeabschnitt (EXCEPTION): Dieser Abschnitt wird zur Behandlung von Fehlern verwendet, die während der Ausführung der Anweisungen im BEGIN-Abschnitt auftreten können. Er ist optional.

1. Variablen und Datentypen:

Variablen in PL/ SQL müssen im DECLARE-Abschnitt deklariert werden. Die für Variablen verwendeten Datentypen sind denen von SQL ähnlich, mit spezifischen Erweiterungen für PL/ SQL.

VARCHAR2: Wird für Zeichenketten verwendet.

NUMBER: Wird für Zahlen verwendet.

DATE: Wird für Daten und Uhrzeiten verwendet.

Beispiel:

DECLARE

v_employee_name VARCHAR2(50);

v_salary NUMBER(10, 2);

v_hire_date DATE;

BEGIN

v_employee_name := ‚Jane Doe‘;

v_salary := 60000;

v_hire_date := SYSDATE;

DBMS_OUTPUT.PUT_LINE(‚Employee: ‚ || v_employee_name || ‚hired on: ‚ || v_hire_date);

END;

2. Bedingungsstrukturen:

Bedingungsstrukturen ermöglichen es, Bedingungen zu testen und Codeblöcke basierend auf den Ergebnissen dieser Tests auszuführen.

Die Bedingungsstruktur IF-THEN-ELSE ermöglicht es, Anweisungen auszuführen, wenn eine Bedingung wahr ist, und gegebenenfalls andere Anweisungen, wenn sie falsch ist.

Beispiel:

BEGIN

IF v_salary > 50000 THEN

DBMS_OUTPUT.PUT_LINE(‚High salary‘);

ELSIF v_salary > 30000 THEN

DBMS_OUTPUT.PUT_LINE(‚Medium salary‘);

ELSE

DBMS_OUTPUT.PUT_LINE(‚Low salary‘);

END IF;

END;

3. Schleifen:

PL/ SQL unterstützt mehrere Arten von Schleifen, die es ermöglichen, Anweisungen wiederholt auszuführen.

FOR-Schleife: Führt einen Anweisungsblock eine definierte Anzahl von Malen aus.

Beispiel:

BEGIN

FOR i IN 1..10 LOOP

DBMS_OUTPUT.PUT_LINE(‚Iteration: ‚ || i);

END LOOP;

END;

WHILE-Schleife: Führt einen Anweisungsblock aus, solange eine Bedingung wahr ist.

Beispiel:

DECLARE

v_counter NUMBER := 1;

BEGIN

WHILE v_counter <= 10 LOOP

DBMS_OUTPUT.PUT_LINE(‚Counter: ‚ || v_counter);

v_counter := v_counter + 1;

END LOOP;

END;

LOOP: Führt einen Anweisungsblock unendlich oft aus, bis eine Austrittsbedingung erfüllt ist.

Beispiel:

DECLARE

v_counter NUMBER := 1;

BEGIN

LOOP

EXIT WHEN v_counter > 10;

DBMS_OUTPUT.PUT_LINE(‚Counter: ‚ || v_counter);

v_counter := v_counter + 1;

END LOOP;

END;

4. Prozeduren:

Stored Procedures sind wiederverwendbare PL/ SQL-Subprogramme, die zum Ausführen spezifischer Aufgaben verwendet werden können.

Hier ist ein Beispiel einer Prozedur zur Erhöhung des Gehalts von Mitarbeitern basierend auf ihrer Leistung:

CREATE OR REPLACE PROCEDURE adjust_salary (emp_id NUMBER, increment NUMBER) AS

BEGIN

UPDATE employees SET salary = salary + increment WHERE employee_id = emp_id;

COMMIT;

END;

Diese Prozedur nimmt eine Mitarbeiter-ID und einen Erhöhungsbetrag als Eingabe entgegen und aktualisiert dann das Gehalt des entsprechenden Mitarbeiters.

Um diese Prozedur aufzurufen, reicht es aus:

BEGIN

adjust_salary(1001, 5000);

END;

5. Funktionen:

Funktionen sind PL/ SQL-Subprogramme, die einen einzelnen Wert zurückgeben können.

Hier ist ein Beispiel für eine Funktion, die den Durchschnittsgehalt der Mitarbeiter berechnet:

CREATE OR REPLACE FUNCTION calculate_average_salary RETURN NUMBER AS

avg_salary NUMBER;

BEGIN

SELECT AVG(salary) INTO avg_salary FROM employees;

RETURN avg_salary;

END;

Diese Funktion berechnet den Durchschnittsgehalt der Mitarbeiter und gibt das Ergebnis zurück.

6. Fehlerbehandlung:

Die Fehlerbehandlung ist ein wesentlicher Bestandteil von PL/ SQL und ermöglicht es, Fehler elegant zu handhaben und die Stabilität der Anwendung sicherzustellen.

Fehler werden im EXCEPTION-Abschnitt eines PL/SQL-Blocks behandelt. Es gibt vordefinierte Ausnahmen wie NO_DATA_FOUND und TOO_MANY_ROWS sowie die Möglichkeit, benutzerdefinierte Ausnahmen zu definieren.

Beispiel:

BEGIN

SELECT name INTO v_employee_name FROM employees WHERE employee_id = 9999;

EXCEPTION

WHEN NO_DATA_FOUND THEN

DBMS_OUTPUT.PUT_LINE(‚No data found for the specified employee ID.‘);

WHEN TOO_MANY_ROWS THEN

DBMS_OUTPUT.PUT_LINE(‚Multiple rows found for the specified employee ID.‘);

WHEN OTHERS THEN

DBMS_OUTPUT.PUT_LINE(‚An unexpected error occurred: ‚ || SQLERRM);

END;

7. Trigger:

Trigger sind PL/ SQL-Blöcke, die automatisch als Reaktion auf spezifische Ereignisse bei einer Tabelle ausgeführt werden, wie das Einfügen, Aktualisieren oder Löschen von Zeilen.

Hier ist ein Beispiel eines Triggers, der die Historie von Änderungen an einer kritischen Tabelle protokolliert:

CREATE OR REPLACE TRIGGER audit_trigger

AFTER INSERT OR UPDATE OR DELETE ON employees

FOR EACH ROW

BEGIN

IF INSERTING THEN

INSERT INTO audit_log (action, employee_id, action_time) VALUES (‚INSERT‘, :NEW.employee_id, SYSDATE);

ELSIF UPDATING THEN

INSERT INTO audit_log (action, employee_id, action_time) VALUES (‚UPDATE‘, :NEW.employee_id, SYSDATE);

ELSIF DELETING THEN

INSERT INTO audit_log (action, employee_id, action_time) VALUES (‚DELETE‘, :OLD.employee_id, SYSDATE);

END IF;

END;

Dieser Trigger ermöglicht es, alle Änderungen an der Tabelle `employees` zu verfolgen, indem die Aktionen in einer Tabelle `audit_log` protokolliert werden.

Fazit

PL/ SQL ist eine mächtige Sprache, die es ermöglicht, die Fähigkeiten von SQL mit prozeduralen Funktionen zu erweitern. Sie bietet bedeutende Vorteile in Bezug auf Leistung, Fehlerbehandlung, Sicherheit und Portabilität. Dank ihrer Kontrollstrukturen, gespeicherten Prozeduren, Funktionen und Trigger erleichtert PL/  SQL die Erstellung robuster und leistungsfähiger Anwendungen. Durch das Verstehen und Anwenden dieser Konzepte können Entwickler die von der Oracle-Datenbank angebotenen Funktionen voll ausschöpfen, um effiziente und zuverlässige Lösungen zu entwickeln.

Um mehr über die SQL-Sprache zu erfahren und Dich für Berufe im Bereich Data auszubilden, trete DataScientest bei.

DataScientest News

Melde Dich jetzt für unseren Newsletter an, um unsere Guides, Tutorials und die neuesten Entwicklungen im Bereich Data Science direkt per E-Mail zu erhalten.

Möchtest Du informiert bleiben?

Schreib uns Deine E-Mail-Adresse, damit wir Dir die neuesten Artikel zum Zeitpunkt der Veröffentlichung zusenden können!
icon newsletter

DataNews

Starte Deine Karriere im Bereich Data: Erhalte regelmäßig Insiderwissen und wertvolle Karrieretipps in Deinem Posteingang.