Oracle PL/SQL-Datentypen: Boolescher Wert, Zahl, Datum [Beispiel]

โšก Intelligente Zusammenfassung

PL/SQL-Datentypen definieren, wie Oracle Speichert, verarbeitet und beschrรคnkt jeden Wert in einem Block. Sie werden in die Familien Zeichen, Zahl, Boolescher Wert, Datum und Large Object (LOB) eingeteilt, jede mit ihrem eigenen Speicherformat, GrรถรŸenbeschrรคnkungen und Zuweisungsregeln.

  • ๐Ÿ”ค Charakter: CHAR hat eine feste Lรคnge, VARCHAR2 hat eine variable Lรคnge, und NCHAR und NVARCHAR2 verwenden den nationalen Zeichensatz.
  • ๐Ÿ”ข Nummer: NUMBER speichert Festkomma- oder Gleitkommawerte mit einer Genauigkeit von bis zu 38 Stellen.
  • โœ… Boolesch: Enthรคlt den Wert WAHR oder FALSCH und wird hauptsรคchlich in der bedingten Logik verwendet.
  • ๐Ÿ“… Datum: Speichert Datum und Uhrzeit; standardmรครŸig wird Mitternacht verwendet, wenn keine Uhrzeit angegeben ist.
  • ๐Ÿ—‚๏ธ LOB: BLOB, CLOB, NCLOB und BFILE speichern groรŸe unstrukturierte Datenmengen bis zu 128 TB.
  • ๐Ÿ’ก Best Practice: Um Speicherplatz zu sparen und zukunftssicher zu sein, sollten Sie VARCHAR2 gegenรผber CHAR und LOB gegenรผber LONG bevorzugen.
  • ๐Ÿ”— Umfang: SQL-Typen werden auf Tabellenspalten angewendet; PL/SQL-Typen werden innerhalb von PL/SQL-Blรถcken verwendet.

Oracle PL/SQL-Datentypen

Was sind PL/SQL-Datentypen?

Datentypen In PL/SQL wird definiert, wie Daten gespeichert, verarbeitet und behandelt werden. Oracle Wรคhrend der Speicherung und Verarbeitung werden Datentypen einem bestimmten Speicherformat und Bereichsbeschrรคnkungen zugeordnet. OracleJedem Wert oder jeder Konstante wird ein Datentyp zugewiesen.

Der Hauptunterschied zwischen PL/SQL und SQL Der Unterschied zwischen SQL- und PL/SQL-Datentypen besteht darin, dass SQL-Datentypen auf Tabellenspalten beschrรคnkt sind, wรคhrend PL/SQL-Datentypen in der gesamten Datenbank verwendet werden. PL/SQL-Blรถcke. Mehr dazu spรคter im Tutorial.

Nachfolgend ein Diagramm der verschiedenen Oracle PL/SQL-Datentypen:

Verschiedene Datentypen in PL/SQL
Verschiedene Datentypen in PL/SQL

PL/SQL CHARACTER-Datentyp

Dieser Datentyp speichert alphanumerische Zeichen im Zeichenkettenformat. Die Literalwerte mรผssen beim Zuweisen zu einem CHARACTER-Datentyp immer in einfache Anfรผhrungszeichen eingeschlossen werden.

Dieser Zeichendatentyp wird weiter wie folgt klassifiziert:

  • CHAR-Datentyp (feste Zeichenkettenlรคnge)
  • VARCHAR2-Datentyp (variable Zeichenkettenlรคnge)
  • VARCHAR-Datentyp
  • NCHAR (native feste ZeichenfolgengrรถรŸe)
  • NVARCHAR2 (native variable ZeichenfolgengrรถรŸe)
  • LANG und LANG ROH
Dateityp Beschreibung Syntax
VERKOHLEN Dieser Datentyp speichert einen Zeichenkettenwert, dessen GrรถรŸe bei der Deklaration festgelegt wird. Variable.

  • Oracle Die Variable wird mit Leerzeichen aufgefรผllt, falls sie nicht die gesamte deklarierte GrรถรŸe einnimmt. Oracle reserviert den Speicher fรผr die angegebene GrรถรŸe, auch wenn die Variable ihn nicht vollstรคndig ausfรผllt.
  • Die GrรถรŸenbeschrรคnkung betrรคgt 1-2000 Byte.
  • CHAR ist รผberall dort besser geeignet, wo Daten einer festen GrรถรŸe verarbeitet werden.
grade CHAR;
manager CHAR (10):= 'guru99';

Syntaxerklรคrung:

  • Die erste Anweisung deklariert die Variable 'grade' vom Datentyp CHAR mit einer maximalen GrรถรŸe von 1 Byte (Standardwert).
  • Die zweite Anweisung deklariert die Variable 'manager' vom Datentyp CHAR mit einer maximalen GrรถรŸe von 10 und weist ihr den Wert 'guru99' zu, der 6 Byte groรŸ ist. Oracle In diesem Fall werden 10 Bytes anstatt 6 Bytes zugewiesen.
VARCHAR2 Dieser Datentyp speichert eine Zeichenkette, deren Lรคnge jedoch nicht festgelegt ist.

  • Die GrรถรŸenbeschrรคnkung betrรคgt 1-4000 Byte fรผr eine Tabellenspalte und 1-32767 Byte fรผr eine Variable.
  • Die GrรถรŸe wird fรผr jede Variable bei ihrer Deklaration festgelegt.
  • Oracle Der Speicher wird erst nach der Definition der Variablen reserviert, sodass die tatsรคchliche Lรคnge der gespeicherten Zeichenkette und nicht die deklarierte GrรถรŸe verwendet wird.
  • Um die Speichernutzung zu optimieren, ist es immer ratsam, VARCHAR2 anstelle von CHAR zu verwenden.
manager VARCHAR2(10) := 'guru99';

Syntaxerklรคrung:

  • Die Anweisung deklariert die Variable 'manager' vom Datentyp VARCHAR2 mit einer maximalen GrรถรŸe von 10 und weist ihr den Wert 'guru99' zu, was 6 Byte entspricht. Oracle Hier werden nur 6 Byte Speicherplatz reserviert.
VARCHAR Dies ist gleichbedeutend mit dem Datentyp VARCHAR2.

  • Um Verhaltensรคnderungen zu vermeiden, empfiehlt es sich stets, VARCHAR2 anstelle von VARCHAR zu verwenden.
manager VARCHAR(10) := 'guru99';

Syntaxerklรคrung:

  • Die Anweisung deklariert die Variable 'manager' vom Datentyp VARCHAR mit einer maximalen GrรถรŸe von 10 und weist ihr den Wert 'guru99', 6 Bytes, zu. Oracle Es werden nur 6 Bytes zugewiesen, รคhnlich wie bei VARCHAR2.
NCHAR Dieser Datentyp ist derselbe wie CHAR, aber der Zeichensatz ist der nationale Zeichensatz.

  • Dieser Zeichensatz kann mit NLS_PARAMETERS fรผr die Sitzung definiert werden.
  • Der Zeichensatz kann entweder UTF16 oder UTF8 sein.
  • Die GrรถรŸenbeschrรคnkung betrรคgt 1-2000 Byte.
native NCHAR(10);

Syntaxerklรคrung:

  • Die Anweisung deklariert die Variable 'native' vom Datentyp NCHAR mit einer maximalen GrรถรŸe von 10.
  • Die Lรคnge hรคngt von der Anzahl der Bytes pro Zeichen ab, die im Zeichensatz definiert sind.
NVARCHAR2 Dieser Datentyp ist derselbe wie VARCHAR2, aber der Zeichensatz ist der nationale Zeichensatz.

  • Dieser Zeichensatz kann mit NLS_PARAMETERS fรผr die Sitzung definiert werden.
  • Der Zeichensatz kann entweder UTF16 oder UTF8 sein.
  • Die GrรถรŸenbeschrรคnkung betrรคgt 1-4000 Byte.
Native_var NVARCHAR2(10):= 'guru99';

Syntaxerklรคrung:

  • Die Anweisung deklariert die Variable 'Native_var' vom Datentyp NVARCHAR2 mit einer maximalen GrรถรŸe von 10.
LANG und LANG ROH Dieser Datentyp speichert groรŸe Text- oder Rohdatenmengen mit einer maximalen GrรถรŸe von 2 GB.

  • Diese werden hauptsรคchlich im Datenwรถrterbuch verwendet.
  • LONG speichert Zeichensatzdaten, wรคhrend LONG RAW Daten im Binรคrformat speichert.
  • LONG RAW akzeptiert Medienobjekte und Bilder, wรคhrend LONG nur mit Daten arbeitet, die mit einem Zeichensatz gespeichert werden kรถnnen.
Large_text LONG;
Large_raw LONG RAW;

Syntaxerklรคrung:

  • Die Anweisung deklariert 'Large_text' vom Datentyp LONG und 'Large_raw' vom Datentyp LONG RAW.

Hinweis: Die Verwendung des Datentyps LONG wird nicht empfohlen von OracleDer Datentyp LOB sollte stattdessen bevorzugt werden.

PL/SQL NUMBER-Datentyp

Dieser Datentyp speichert Festkomma- oder Gleitkommazahlen mit bis zu 38 Nachkommastellen. Er wird fรผr Felder verwendet, die ausschlieรŸlich Zahlen enthalten. Die Variable kann mit oder ohne Angabe der Genauigkeit und der Nachkommastellen deklariert werden. Werte mรผssen bei der Zuweisung nicht in Anfรผhrungszeichen gesetzt werden.

A NUMBER(8,2);
B NUMBER(8);
C NUMBER;

Syntaxerklรคrung:

  • Die erste Deklaration deklariert die Variable 'A' vom Datentyp Zahl mit einer Gesamtgenauigkeit von 8 und 2 Dezimalstellen.
  • Die zweite Angabe deklariert 'B' vom Datentyp Zahl mit einer Gesamtgenauigkeit von 8 und ohne Dezimalstellen.
  • Der dritte Typ ist der allgemeinste und deklariert den Datentyp โ€žCโ€œ fรผr Zahlen ohne Einschrรคnkungen hinsichtlich Genauigkeit oder Dezimalstellen. Er kann bis zu 38 Stellen aufnehmen.

PL/SQL BOOLEAN-Datentyp

Dieser Datentyp speichert logische Werte. Oracle Der Datentyp Boolean reprรคsentiert entweder WAHR oder FALSCH und wird hauptsรคchlich in bedingten Anweisungen verwendet. Werte mรผssen bei der Zuweisung nicht in Anfรผhrungszeichen gesetzt werden.

Var1 BOOLEAN;

Syntaxerklรคrung:

  • Die Variable 'Var1' ist als BOOLEAN-Datentyp deklariert. Die Ausgabe ist je nach der festgelegten Bedingung entweder wahr oder falsch.

PL/SQL-DATE-Datentyp

Dieser Datentyp speichert Werte im Datumsformat (Tag, Monat, Jahr). Variablen vom Typ DATE kรถnnen auch Zeitinformationen enthalten; standardmรครŸig wird die Uhrzeit auf 12:00:00 gesetzt, sofern nichts anderes angegeben ist. Werte mรผssen bei der Zuweisung in Anfรผhrungszeichen gesetzt werden.

Die Standard Oracle Das Zeitformat fรผr Ein- und Ausgabe ist 'TT-MON-JJ', das auf Sitzungsebene bei NLS_PARAMETERS (NLS_DATE_FORMAT) festgelegt wird.

newyear DATE:= '01-JAN-2015';
current_date DATE:= SYSDATE;

Syntaxerklรคrung:

  • Die Variable 'newyear' ist als Datentyp DATE deklariert und ihr wurde der Wert 1. Januar 2015 zugewiesen.
  • Die zweite Deklaration deklariert 'current_date' als DATE-Datentyp und weist ihm das aktuelle Systemdatum zu.
  • Beide Variablen enthalten Zeitinformationen.

PL/SQL LOB-Datentyp

Dieser Datentyp wird hauptsรคchlich zum Speichern und Bearbeiten groรŸer Blรถcke unstrukturierter Daten wie Bilder und Multimediadateien verwendet. Oracle LOB wird gegenรผber dem Datentyp LONG bevorzugt, da er flexibler ist. Die Hauptvorteile von LOB gegenรผber LONG sind:

  • Eine Tabelle ist auf eine LONG-Spalte beschrรคnkt, wรคhrend es keine Beschrรคnkung fรผr die Anzahl der LOB-Spalten gibt.
  • Datenschnittstellentools akzeptieren LOB-Spalten wรคhrend der Replikation, lassen aber LONG-Spalten aus, die manuell repliziert werden mรผssen.
  • Eine LONG-Spalte speichert bis zu 2 GB, wรคhrend eine LOB-Spalte bis zu 128 TB speichern kann.
  • Oracle Der LOB-Datentyp wird mit jeder neuen Version verbessert, wรคhrend LONG weitgehend unverรคndert bleibt.

Daher ist es stets ratsam, den Datentyp LOB anstelle von LONG zu verwenden. Die verschiedenen unten aufgefรผhrten LOB-Datentypen kรถnnen bis zu 128 Terabyte speichern:

  1. BLOB
  2. CLOB und NCLOB
  3. BFILE
Dateityp Beschreibung Syntax
BLOB Dieser Datentyp speichert LOB-Daten im Binรคrdateiformat bis zu einer maximalen GrรถรŸe von 128 TB. Er speichert keine Daten basierend auf Zeichensatzdetails, sodass er unstrukturierte Daten wie Multimedia-Objekte und Bilder speichern kann.
Binary_data BLOB;

Syntaxerklรคrung:

  • Die Variable 'Binary_data' ist als BLOB deklariert.
CLOB und NCLOB CLOB speichert LOB-Daten im Zeichensatz, NCLOB hingegen im nativen Zeichensatz. Da diese Speichertypen zeichensatzbasiert sind, kรถnnen sie keine Daten wie Multimedia oder Bilder speichern. Die maximale GrรถรŸe betrรคgt 128 TB.
Charac_data CLOB;

Syntaxerklรคrung:

  • Die Variable 'Charac_data' ist als CLOB-Datentyp deklariert.
BFILE
  • BFILE speichert unstrukturierte Binรคrdaten auรŸerhalb der Datenbank als Betriebssystemdatei.
  • Die GrรถรŸe einer BFILE ist durch das Betriebssystem begrenzt, und die Dateien sind schreibgeschรผtzt und kรถnnen nicht verรคndert werden.

Hรคufig gestellte Fragen

CHAR ist ein Datentyp mit fester Lรคnge und fรผllt mit Leerzeichen auf die angegebene GrรถรŸe auf, wodurch bei kurzen Werten Speicherplatz verschwendet wird. VARCHAR2 hingegen ist ein Datentyp mit variabler Lรคnge und speichert nur die tatsรคchlichen Zeichen, weshalb er fรผr die meisten Zeichenkettenspalten bevorzugt wird.

LOB ermรถglicht mehrere Spalten pro Tabelle, speichert bis zu 128 TB und wird mit jeder neuen Version verbessert. LONG ist auf eine Spalte und maximal 2 GB beschrรคnkt und wird hauptsรคchlich aus Grรผnden der Abwรคrtskompatibilitรคt beibehalten.

Nicht in รคlteren Versionen. BOOLEAN war ein reiner PL/SQL-Datentyp, daher verwendeten Tabellenspalten stattdessen ein NUMBER- oder CHAR-Flag. Er wird direkt innerhalb von Blรถcken fรผr bedingte Logik verwendet.

Ja. Durch die Analyse von Stichprobenwerten hinsichtlich Lรคnge, Wertebereich und Format kann die KI VARCHAR2, NUMBER, DATE oder LOB vorschlagen und zu groรŸe Spalten kennzeichnen. Die Auswahl sollte anhand zukรผnftiger Daten bestรคtigt werden.

Ja. DATE speichert Jahrhundert, Jahr, Monat, Tag, Stunde, Minute und Sekunde. Wird keine Uhrzeit angegeben, wird standardmรครŸig Mitternacht verwendet. Fรผr Sekundenbruchteile oder Zeitzonen verwenden Sie stattdessen TIMESTAMP.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: