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 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