PL/SQL - Datentypen

Hallo, angehende Programmierer! Heute tauchen wir in die faszinierende Welt der PL/SQL-Datentypen ein. Keine Sorge, wenn Sie neu im Programmieren sind; ich werde Sie auf dieser Reise Schritt für Schritt führen. Am Ende dieses Tutorials werden Sie sich mit verschiedenen Datentypen in PL/SQL wohlfühlen und bereit sein, Ihre 编程-Abenteuer zu beginnen!

PL/SQL - Data Types

PL/SQL Skalare Datentypen und Untertypen

Lassen Sie uns mit den Grundlagen beginnen. In PL/SQL sind skalare Datentypen die Bausteine unserer Programme. Sie repräsentieren einzelne Werte, wie Zahlen oder Text.

Was sind Skalare Datentypen?

Skalare Datentypen sind die einfachste Form von Daten in PL/SQL. Sie sind wie Atome unseres Programmieruniversums – kleine, unteilbare Einheiten, die wir verwenden, um komplexere Strukturen zu bauen.

Hier ist ein einfaches Beispiel, um einen skalaren Datentyp zu verdeutlichen:

DECLARE
my_name VARCHAR2(50) := 'John Doe';
BEGIN
DBMS_OUTPUT.PUT_LINE(' Mein Name ist: ' || my_name);
END;

In diesem Beispiel ist my_name eine Variable des VARCHAR2-Datentyps, der zur Speicherung von Text verwendet wird. Wir haben ihm den Wert 'John Doe' zugewiesen. Wenn wir diesen Code ausführen, wird er ausgeben: "Mein Name ist: John Doe".

PL/SQL Numerische Datentypen und Untertypen

Nun sprechen wir über Zahlen. PL/SQL bietet mehrere numerische Datentypen, um verschiedene Arten von Zahlen zu handhaben.

Häufige Numerische Datentypen

Datentyp Beschreibung Beispiel
NUMBER Allgemeiner Zweckszahl NUMBER(10,2)
INTEGER Ganzzahlen INTEGER
BINARY_FLOAT 32-Bit-Gleitkommazahl BINARY_FLOAT
BINARY_DOUBLE 64-Bit-Gleitkommazahl BINARY_DOUBLE

Sehen wir uns diese in der Praxis an:

DECLARE
my_integer INTEGER := 42;
my_float BINARY_FLOAT := 3.14;
my_salary NUMBER(8,2) := 5000.50;
BEGIN
DBMS_OUTPUT.PUT_LINE('Die Antwort ist: ' || my_integer);
DBMS_OUTPUT.PUT_LINE('Pi ist ungefähr: ' || my_float);
DBMS_OUTPUT.PUT_LINE('Mein Gehalt ist: $' || my_salary);
END;

Dieses Skript deklariert drei Variablen mit verschiedenen numerischen Typen. Der NUMBER(8,2)-Typ für my_salary bedeutet, dass er bis zu 8 Ziffern insgesamt speichern kann, davon 2 Nachkommastellen.

PL/SQL Zeichen-Datentypen und Untertypen

Textdaten sind in der Programmierung entscheidend. PL/SQL bietet mehrere Zeichen-Datentypen, um Text effizient zu handhaben.

Häufige Zeichen-Datentypen

Datentyp Beschreibung Beispiel
VARCHAR2 Variabellanger Zeichnenstring VARCHAR2(100)
CHAR Festlanger Zeichnenstring CHAR(10)
NVARCHAR2 Variabellanger Unicode-String NVARCHAR2(100)
NCHAR Festlanger Unicode-String NCHAR(10)

So verwenden wir sie in der Praxis:

DECLARE
my_varchar VARCHAR2(50) := 'Hallo, Welt!';
my_char CHAR(10) := 'Fixed     ';
my_nvarchar NVARCHAR2(50) := N'こんにちは'; -- Japanisch "Hallo"
BEGIN
DBMS_OUTPUT.PUT_LINE('VARCHAR2: ' || my_varchar);
DBMS_OUTPUT.PUT_LINE('CHAR: ' || my_char || '(Ende)');
DBMS_OUTPUT.PUT_LINE('NVARCHAR2: ' || my_nvarchar);
END;

Beachten Sie, wie der CHAR-Typ die Zeichenkette mit Leerzeichen auffüllt, um seine feste Länge zu füllen.

PL/SQL Boolesche Datentypen

Boolesche Datentypen sind entscheidend für Entscheidungen in unseren Programmen. Sie können nur drei mögliche Werte annehmen: TRUE, FALSE oder NULL.

DECLARE
is_student BOOLEAN := TRUE;
has_job BOOLEAN := FALSE;
is_married BOOLEAN;
BEGIN
IF is_student THEN
DBMS_OUTPUT.PUT_LINE('Diese Person ist ein Student.');
END IF;

IF NOT has_job THEN
DBMS_OUTPUT.PUT_LINE('Diese Person hat keine Arbeit.');
END IF;

IF is_married IS NULL THEN
DBMS_OUTPUT.PUT_LINE('Wir wissen nicht, ob diese Person verheiratet ist.');
END IF;
END;

Dieses Skript zeigt, wie wir boolesche Werte verwenden, um Entscheidungen in unserem Code zu treffen.

PL/SQL Datum und Intervalltypen

Bei der Arbeit mit Daten und Zeiten bietet PL/SQL spezifische Datentypen, um diese Werte präzise zu handhaben.

Häufige Datumstypen

Datentyp Beschreibung Beispiel
DATE Datum und Zeit DATE
TIMESTAMP Datum und Zeit mit Bruchteilen von Sekunden TIMESTAMP
INTERVAL YEAR TO MONTH Zeitraum in Jahren und Monaten INTERVAL YEAR TO MONTH
INTERVAL DAY TO SECOND Zeitraum in Tagen, Stunden, Minuten und Sekunden INTERVAL DAY TO SECOND

Sehen wir uns diese in der Praxis an:

DECLARE
current_date DATE := SYSDATE;
future_date TIMESTAMP := SYSTIMESTAMP + INTERVAL '1' YEAR;
age_interval INTERVAL YEAR TO MONTH;
BEGIN
age_interval := (SYSDATE - TO_DATE('1990-01-01', 'YYYY-MM-DD')) YEAR TO MONTH;

DBMS_OUTPUT.PUT_LINE('Aktuelles Datum: ' || TO_CHAR(current_date, 'DD-MON-YYYY'));
DBMS_OUTPUT.PUT_LINE('Datum nach 1 Jahr: ' || TO_CHAR(future_date, 'DD-MON-YYYY HH24:MI:SS.FF'));
DBMS_OUTPUT.PUT_LINE('Alter: ' || age_interval);
END;

Dieses Skript zeigt die Arbeit mit Daten, Zeitstempeln und Intervallen.

PL/SQL Large Object (LOB) Datentypen

Für die Handhabung großer Datenmengen bietet PL/SQL LOB (Large Object) Datentypen.

Häufige LOB-Typen

Datentyp Beschreibung Beispiel
CLOB Zeichen Large Object CLOB
BLOB Binär Large Object BLOB
NCLOB National Character Large Object NCLOB

Hier ist ein einfaches Beispiel der Verwendung eines CLOB:

DECLARE
my_clob CLOB;
BEGIN
my_clob := 'Dies ist eine sehr lange Zeichenkette, die potenziell mehrere Megabyte groß sein könnte.';
DBMS_OUTPUT.PUT_LINE(DBMS_LOB.GETLENGTH(my_clob) || ' Zeichen lang');
END;

Dieses Skript erstellt ein CLOB und zeigt, wie man seine Länge ermittelt.

PL/SQL Benutzerdefinierte Untertypen

PL/SQL ermöglicht es Ihnen, Ihre eigenen Untertypen basierend auf vorhandenen Datentypen zu erstellen. Dies kann helfen, Ihren Code lesbarer und wartbarer zu machen.

DECLARE
SUBTYPE positive_number IS NUMBER(8,2) CHECK (positive_number > 0);
my_salary positive_number;
BEGIN
my_salary := 5000.50;
DBMS_OUTPUT.PUT_LINE('Mein Gehalt: $' || my_salary);

-- Dies würde einen Fehler auslösen:
-- my_salary := -1000;
END;

In diesem Beispiel haben wir einen Untertyp positive_number erstellt, der sicherstellt, dass der Wert stets positiv ist.

NULL-Werte in PL/SQL

Schließlich sprechen wir über NULL-Werte. In PL/SQL repräsentiert NULL einen unbekannten oder nicht verfügbaren Wert. Es ist nicht dasselbe wie Null oder ein leerer String.

DECLARE
var1 NUMBER;
var2 VARCHAR2(10) := '';
BEGIN
IF var1 IS NULL THEN
DBMS_OUTPUT.PUT_LINE('var1 ist NULL');
END IF;

IF var2 IS NOT NULL THEN
DBMS_OUTPUT.PUT_LINE('var2 ist nicht NULL, es ist ein leerer String');
END IF;
END;

Dieses Skript zeigt den Unterschied zwischen NULL und einem leeren String.

Und das war's! Wir haben die wichtigsten Datentypen in PL/SQL behandelt. Denken Sie daran, dass das Verständnis von Datentypen entscheidend für die Erstellung effizienter und fehlerfreier Code ist. Üben Sie weiter, und bald werden Sie ein PL/SQL-Profi sein!

Credits: Image by storyset