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.