PL / SQL - Datentypen

In diesem Kapitel werden die Datentypen in PL / SQL erläutert. Die PL / SQL-Variablen, -Konstanten und -Parameter müssen einen gültigen Datentyp haben, der ein Speicherformat, Einschränkungen und einen gültigen Wertebereich angibt. Wir werden uns auf die konzentrierenSCALAR und die LOBDatentypen in diesem Kapitel. Die beiden anderen Datentypen werden in anderen Kapiteln behandelt.

S.No. Kategorie beschreibung
1

Scalar

Einzelwerte ohne interne Komponenten, z NUMBER, DATE, oder BOOLEAN.

2

Large Object (LOB)

Zeiger auf große Objekte, die getrennt von anderen Datenelementen gespeichert werden, z. B. Text, Grafiken, Videoclips und Tonwellenformen.

3

Composite

Datenelemente mit internen Komponenten, auf die einzeln zugegriffen werden kann. Zum Beispiel Sammlungen und Aufzeichnungen.

4

Reference

Zeiger auf andere Datenelemente.

Skalare PL / SQL-Datentypen und Subtypen

Skalare PL / SQL-Datentypen und Subtypen fallen unter die folgenden Kategorien:

S.No. Datumstyp & Beschreibung
1

Numeric

Numerische Werte, für die arithmetische Operationen ausgeführt werden.

2

Character

Alphanumerische Werte, die einzelne Zeichen oder Zeichenfolgen darstellen.

3

Boolean

Logische Werte, für die logische Operationen ausgeführt werden.

4

Datetime

Daten und Zeiten.

PL / SQL bietet Untertypen von Datentypen. Beispielsweise hat der Datentyp NUMBER einen Untertyp namens INTEGER. Sie können die Untertypen in Ihrem PL / SQL-Programm verwenden, um die Datentypen mit Datentypen in anderen Programmen kompatibel zu machen, während Sie den PL / SQL-Code in ein anderes Programm, z. B. ein Java-Programm, einbetten.

Numerische PL / SQL-Datentypen und Subtypen

In der folgenden Tabelle sind die vordefinierten numerischen PL / SQL-Datentypen und ihre Untertypen aufgeführt.

S.No. Datentyp & Beschreibung
1

PLS_INTEGER

Ganzzahl mit Vorzeichen im Bereich von -2.147.483.648 bis 2.147.483.647, dargestellt in 32 Bit

2

BINARY_INTEGER

Ganzzahl mit Vorzeichen im Bereich von -2.147.483.648 bis 2.147.483.647, dargestellt in 32 Bit

3

BINARY_FLOAT

Gleitkommazahl im IEEE 754-Format mit einfacher Genauigkeit

4

BINARY_DOUBLE

Gleitkommazahl im IEEE 754-Format mit doppelter Genauigkeit

5

NUMBER(prec, scale)

Festkomma- oder Gleitkommazahl mit Absolutwert im Bereich von 1E-130 bis 1.0E126 (jedoch nicht eingeschlossen). Eine NUMBER-Variable kann auch 0 darstellen

6

DEC(prec, scale)

ANSI-spezifischer Festkommatyp mit einer maximalen Genauigkeit von 38 Dezimalstellen

7

DECIMAL(prec, scale)

IBM spezifischer Festkommatyp mit einer maximalen Genauigkeit von 38 Dezimalstellen

8

NUMERIC(pre, secale)

Floating-Typ mit einer maximalen Genauigkeit von 38 Dezimalstellen

9

DOUBLE PRECISION

ANSI-spezifischer Gleitkommatyp mit einer maximalen Genauigkeit von 126 Binärziffern (ca. 38 Dezimalstellen)

10

FLOAT

ANSI- und IBM-spezifischer Gleitkommatyp mit einer maximalen Genauigkeit von 126 Binärziffern (ca. 38 Dezimalstellen)

11

INT

ANSI-spezifischer Integer-Typ mit einer maximalen Genauigkeit von 38 Dezimalstellen

12

INTEGER

ANSI- und IBM-spezifischer Integer-Typ mit einer maximalen Genauigkeit von 38 Dezimalstellen

13

SMALLINT

ANSI- und IBM-spezifischer Integer-Typ mit einer maximalen Genauigkeit von 38 Dezimalstellen

14

REAL

Gleitkomma-Typ mit maximaler Genauigkeit von 63 Binärziffern (ca. 18 Dezimalstellen)

Es folgt eine gültige Erklärung -

DECLARE 
   num1 INTEGER; 
   num2 REAL; 
   num3 DOUBLE PRECISION; 
BEGIN 
   null; 
END; 
/

Wenn der obige Code kompiliert und ausgeführt wird, ergibt sich das folgende Ergebnis:

PL/SQL procedure successfully completed

PL / SQL-Zeichendatentypen und -Untertypen

Im Folgenden werden die vordefinierten PL / SQL-Zeichendatentypen und ihre Untertypen detailliert beschrieben.

S.No. Datentyp & Beschreibung
1

CHAR

Zeichenfolge mit fester Länge und einer maximalen Größe von 32.767 Byte

2

VARCHAR2

Zeichenfolge variabler Länge mit einer maximalen Größe von 32.767 Byte

3

RAW

Binär- oder Byte-Zeichenfolge variabler Länge mit einer maximalen Größe von 32.767 Bytes, die von PL / SQL nicht interpretiert wird

4

NCHAR

Nationale Zeichenfolge mit fester Länge und einer maximalen Größe von 32.767 Byte

5

NVARCHAR2

Nationale Zeichenfolge variabler Länge mit einer maximalen Größe von 32.767 Byte

6

LONG

Zeichenfolge variabler Länge mit einer maximalen Größe von 32.760 Byte

7

LONG RAW

Binär- oder Bytezeichenfolge variabler Länge mit einer maximalen Größe von 32.760 Bytes, nicht von PL / SQL interpretiert

8

ROWID

Physische Zeilenkennung, die Adresse einer Zeile in einer normalen Tabelle

9

UROWID

Universelle Zeilenkennung (physische, logische oder fremde Zeilenkennung)

Boolesche PL / SQL-Datentypen

Das BOOLEANDer Datentyp speichert logische Werte, die in logischen Operationen verwendet werden. Die logischen Werte sind die Booleschen WerteTRUE und FALSE und der Wert NULL.

SQL hat jedoch keinen Datentyp, der BOOLEAN entspricht. Daher können Boolesche Werte nicht in - verwendet werden

  • SQL-Anweisungen
  • Integrierte SQL-Funktionen (z TO_CHAR)
  • PL / SQL-Funktionen, die aus SQL-Anweisungen aufgerufen werden

PL / SQL-Datums- und Intervalltypen

Das DATEDer Datentyp wird zum Speichern von Datumszeiten fester Länge verwendet, einschließlich der Tageszeit in Sekunden seit Mitternacht. Gültige Daten reichen vom 1. Januar 4712 v. Chr. Bis zum 31. Dezember 9999 n. Chr.

Das Standard-Datumsformat wird durch den Oracle-Initialisierungsparameter NLS_DATE_FORMAT festgelegt. Die Standardeinstellung ist beispielsweise "TT-MON-JJ", die eine zweistellige Nummer für den Tag des Monats, eine Abkürzung für den Monatsnamen und die letzten beiden Ziffern des Jahres enthält. Zum Beispiel 01-OCT-12.

Jedes DATUM enthält das Jahrhundert, das Jahr, den Monat, den Tag, die Stunde, die Minute und die Sekunde. Die folgende Tabelle zeigt die gültigen Werte für jedes Feld -

Feldname Gültige Datetime-Werte Gültige Intervallwerte
JAHR -4712 bis 9999 (ohne Jahr 0) Beliebige Ganzzahl ungleich Null
MONAT 01 bis 12 0 bis 11
TAG 01 bis 31 (begrenzt durch die Werte von MONAT und JAHR gemäß den Regeln des Kalenders für das Gebietsschema) Beliebige Ganzzahl ungleich Null
STUNDE 00 bis 23 0 bis 23
MINUTE 00 bis 59 0 bis 59
ZWEITE 00 bis 59,9 (n), wobei 9 (n) die Genauigkeit der Zeitbruchsekunden ist 0 bis 59,9 (n), wobei 9 (n) die Genauigkeit der Intervallbruchsekunden ist
TIMEZONE_HOUR -12 bis 14 (Bereich berücksichtigt Änderungen der Sommerzeit) Unzutreffend
TIMEZONE_MINUTE 00 bis 59 Unzutreffend
TIMEZONE_REGION Gefunden in der dynamischen Leistungsansicht V $ TIMEZONE_NAMES Unzutreffend
TIMEZONE_ABBR Gefunden in der dynamischen Leistungsansicht V $ TIMEZONE_NAMES Unzutreffend

LOB-Datentypen (PL / SQL Large Object)

LOB-Datentypen (Large Object) beziehen sich auf große Datenelemente wie Text, Grafiken, Videoclips und Tonwellenformen. LOB-Datentypen ermöglichen einen effizienten, zufälligen und stückweisen Zugriff auf diese Daten. Im Folgenden sind die vordefinierten PL / SQL-LOB-Datentypen aufgeführt:

Datentyp Beschreibung Größe
BFILE Wird zum Speichern großer Binärobjekte in Betriebssystemdateien außerhalb der Datenbank verwendet. Systemabhängig. 4 Gigabyte (GB) dürfen nicht überschritten werden.
KLECKS Wird zum Speichern großer Binärobjekte in der Datenbank verwendet. 8 bis 128 Terabyte (TB)
CLOB Wird verwendet, um große Blöcke von Zeichendaten in der Datenbank zu speichern. 8 bis 128 TB
NCLOB Wird verwendet, um große Blöcke von NCHAR-Daten in der Datenbank zu speichern. 8 bis 128 TB

Benutzerdefinierte PL / SQL-Untertypen

Ein Subtyp ist eine Teilmenge eines anderen Datentyps, der als Basistyp bezeichnet wird. Ein Subtyp hat dieselben gültigen Operationen wie sein Basistyp, jedoch nur eine Teilmenge seiner gültigen Werte.

PL / SQL definiert mehrere Untertypen im Paket vor STANDARD. Beispielsweise definiert PL / SQL die Untertypen vorCHARACTER und INTEGER wie folgt -

SUBTYPE CHARACTER IS CHAR; 
SUBTYPE INTEGER IS NUMBER(38,0);

Sie können Ihre eigenen Untertypen definieren und verwenden. Das folgende Programm veranschaulicht das Definieren und Verwenden eines benutzerdefinierten Subtyps:

DECLARE 
   SUBTYPE name IS char(20); 
   SUBTYPE message IS varchar2(100); 
   salutation name; 
   greetings message; 
BEGIN 
   salutation := 'Reader '; 
   greetings := 'Welcome to the World of PL/SQL'; 
   dbms_output.put_line('Hello ' || salutation || greetings); 
END; 
/

Wenn der obige Code an der SQL-Eingabeaufforderung ausgeführt wird, wird das folgende Ergebnis ausgegeben:

Hello Reader Welcome to the World of PL/SQL 
 
PL/SQL procedure successfully completed.

NULL in PL / SQL

PL / SQL NULL-Werte repräsentieren missing oder unknown dataund sie sind keine Ganzzahl, kein Zeichen oder ein anderer spezifischer Datentyp. Beachten Sie, dassNULL ist nicht dasselbe wie eine leere Datenzeichenfolge oder der Nullzeichenwert '\0'. Eine Null kann zugewiesen werden, aber sie kann mit nichts gleichgesetzt werden, auch nicht mit sich selbst.