PL/SQL - Grundsyntax

Willkommen, zukünftige Programmierer! Heute tauchen wir in die aufregende Welt von PL/SQL ein. Machen Sie sich keine Sorgen, wenn Sie noch nie eine Zeile Code geschrieben haben - wir beginnen bei null und bauen Ihr Wissen schrittweise auf. Am Ende dieses Tutorials werden Sie Ihre ersten PL/SQL-Programme mit Selbstvertrauen schreiben können!

PL/SQL - Basic Syntax

Das 'Hallo Welt' Beispiel

Lassen Sie uns mit dem traditionellen "Hallo Welt"-Programm beginnen. Es ist ein Initiationsritual für jeden Programmierer und eine großartige Möglichkeit, unsere Füße mit der PL/SQL-Syntax zu tauchen.

BEGIN
DBMS_OUTPUT.PUT_LINE('Hallo, Welt!');
END;
/

Lassen Sie uns das auseinandernehmen:

  1. BEGIN: Dieses Schlüsselwort markiert den Anfang unseres PL/SQL-Blocks.
  2. DBMS_OUTPUT.PUT_LINE('Hallo, Welt!');: Diese Zeile gibt unsere Nachricht aus. Denken Sie daran als PL/SQLs Möglichkeit, mit uns zu sprechen.
  3. END;: Dies markiert das Ende unseres PL/SQL-Blocks.
  4. /: Dieser Schrägstrich tells SQL*Plus, den PL/SQL-Block auszuführen.

Wenn Sie diesen Code ausführen, werden Sie "Hallo, Welt!" auf Ihrem Bildschirm sehen. Gratulation! Sie haben Ihr erstes PL/SQL-Programm geschrieben.

PL/SQL Bezeichner

Bezeichner sind Namen, die wir verschiedenen Programmelementen wie Variablen, Prozeduren und Funktionen geben. Sie sind wie Namensschilder für verschiedene Teile unseres Codes. Hier sind die Regeln für die Erstellung von Bezeichnern:

  1. Muss mit einem Buchstaben (A-Z oder a-z) beginnen
  2. Kann gefolgt werden von Buchstaben, Zahlen (0-9), Dollarzeichen ($), Unterstrichen (_) oder Rautezeichen (#)
  3. Kann nicht länger als 30 Zeichen sein
  4. Kann kein reserviertes Wort sein (wie BEGIN, END, IF, etc.)

Schauen wir uns einige Beispiele an:

DECLARE
employee_name VARCHAR2(50);
salary NUMBER;
dept_id NUMBER(5);
BEGIN
-- Code kommt hierher
END;
/

In diesem Beispiel sind employee_name, salary und dept_id alle gültige Bezeichner.

PL/SQL Trennzeichen

Trennzeichen sind besondere Zeichen oder Symbole, die eine spezifische Bedeutung in PL/SQL haben. Sie sind wie interpunktion in einem Satz, die dazu beitragen, unseren Code zu strukturieren und verschiedene Teile voneinander zu trennen.

Hier ist eine Tabelle der häufigsten PL/SQL-Trennzeichen:

Trennzeichen Beschreibung
; Anweisungsbeendiger
% Attributindikator
. Komponentenauswahl
( ) Schließt eine Liste von Parametern ein
, Parameter Separator
:= Zuweisungsoperator
=> Assoziationsoperator
-- Einzeiliger Kommentarindikator
/ / Mehrzeilige Kommentartrennzeichen

Lassen Sie uns einige davon in Aktion sehen:

DECLARE
v_count NUMBER := 0; -- Zuweisungsoperator
v_name VARCHAR2(50) := 'John Doe';
BEGIN
v_count := v_count + 1; -- Anweisungsbeendiger
DBMS_OUTPUT.PUT_LINE('Name: ' || v_name); -- Komponentenauswahl
END;
/

PL/SQL Kommentare

Kommentare sind wie Notizzettel in Ihrem Code. Sie werden vom Compiler ignoriert, können aber unglaublich nützlich sein, um zu erklären, was Ihr Code macht. Es gibt zwei Arten von Kommentaren in PL/SQL:

  1. Einzeilige Kommentare: Beginnen mit --
  2. Mehrzeilige Kommentare: Eingeklammert zwischen /* und */

Hier ist ein Beispiel:

DECLARE
-- Dies ist ein einzeiliger Kommentar
v_pi NUMBER := 3.14159;
BEGIN
/*
Dies ist ein mehrzeiliger Kommentar.
Er kann über mehrere Zeilen gehen.
Sehr nützlich für längere Erklärungen.
*/
DBMS_OUTPUT.PUT_LINE('Der Wert von pi ist: ' || v_pi);
END;
/

PL/SQL-Programmteile

PL/SQL-Programmteile sind die Bausteine von PL/SQL-Anwendungen. Sie sind wie Rezepte in einem Kochbuch - jede beschreibt, wie eine bestimmte Aufgabe durchgeführt wird. Die Haupttypen sind:

  1. Anonyme Blöcke
  2. Prozeduren
  3. Funktionen
  4. Pakete

Schauen wir uns Beispiele für jeden an:

1. Anonymer Block

Wir haben das bereits in unserem "Hallo Welt"-Beispiel gesehen. Es ist ein Codeblock, der nicht in der Datenbank gespeichert wird.

BEGIN
DBMS_OUTPUT.PUT_LINE('Dies ist einonymer Block');
END;
/

2. Prozedur

Eine Prozedur ist ein benannter PL/SQL-Block, der eine spezifische Aktion ausführt.

CREATE OR REPLACE PROCEDURE greet_user(p_name IN VARCHAR2) IS
BEGIN
DBMS_OUTPUT.PUT_LINE('Hallo, ' || p_name || '!');
END;
/

-- Um die Prozedur aufzurufen:
BEGIN
greet_user('Alice');
END;
/

3. Funktion

Eine Funktion ist ähnlich einer Prozedur, gibt aber einen Wert zurück.

CREATE OR REPLACE FUNCTION calculate_area(p_radius IN NUMBER)
RETURN NUMBER IS
v_pi CONSTANT NUMBER := 3.14159;
BEGIN
RETURN v_pi * p_radius * p_radius;
END;
/

-- Um die Funktion zu verwenden:
DECLARE
v_area NUMBER;
BEGIN
v_area := calculate_area(5);
DBMS_OUTPUT.PUT_LINE('Die Fläche beträgt: ' || v_area);
END;
/

4. Paket

Ein Paket ist eine Sammlung verwandter Prozeduren, Funktionen, Variablen und anderer PL/SQL-Objekte.

CREATE OR REPLACE PACKAGE math_operations AS
FUNCTION add_numbers(a IN NUMBER, b IN NUMBER) RETURN NUMBER;
FUNCTION subtract_numbers(a IN NUMBER, b IN NUMBER) RETURN NUMBER;
END math_operations;
/

CREATE OR REPLACE PACKAGE BODY math_operations AS
FUNCTION add_numbers(a IN NUMBER, b IN NUMBER) RETURN NUMBER IS
BEGIN
RETURN a + b;
END add_numbers;

FUNCTION subtract_numbers(a IN NUMBER, b IN NUMBER) RETURN NUMBER IS
BEGIN
RETURN a - b;
END subtract_numbers;
END math_operations;
/

-- Um das Paket zu verwenden:
DECLARE
v_result NUMBER;
BEGIN
v_result := math_operations.add_numbers(10, 5);
DBMS_OUTPUT.PUT_LINE('10 + 5 = ' || v_result);

v_result := math_operations.subtract_numbers(10, 5);
DBMS_OUTPUT.PUT_LINE('10 - 5 = ' || v_result);
END;
/

Und dort haben Sie es! Wir haben die grundlegende Syntax von PL/SQL abgedeckt, von einfachen "Hallo Welt"-Programmen bis hin zu komplexeren Strukturen wie Paketen. Denken Sie daran, dass das Lernen von Programmieren wie das Lernen einer neuen Sprache ist - es erfordert Übung und Geduld. Haben Sie keine Angst, die Codebeispiele zu experimentieren, zu verändern und zu sehen, was passiert. So werden Sie diese Konzepte wirklich verinnerlichen und ein versierter PL/SQL-Programmierer werden.

Frohes Coden, und mögen Ihre Abfragen stets die Ergebnisse liefern, die Sie erwarten!

Credits: Image by storyset