VARRAYs wurden bereits 1998 in Oracle 8i als modifizierte Version der Sammlung von verschachtelten Tabellentypen eingeführt, die wir in den vorherigen Blogs besprochen haben.
Empfohlene Lektüre:Wie man eine verschachtelte Tabelle erstellt –
- Als PL/SQL-Blockelement
- Als Datenbankobjekt
- Benutzerdefinierten Datentyp verwenden
Außerdem können Sie jetzt Ihr Wissen zu diesem Thema testen, indem Sie einen Test machen hier.
VARRAY ist ein wichtiges Thema, weil man sieht, dass es in der Zertifizierungsprüfung generell immer eine Frage dazu gibt. Um Verwirrung zu vermeiden, werfen wir zunächst einen kurzen Blick auf das Intro von VARRAYs Kollektion.
VARRAYs, ein Akronym für Variable Sized Arrays wurden bereits 1998 in Oracle 8i als modifiziertes Format von verschachtelten Tabellen eingeführt. Die wichtigsten Änderungen sind in der Speicherorientierung zu sehen. Es gibt keine merklichen Änderungen in der Implementierung, aber ihre Speicherausrichtung ist völlig anders als bei den verschachtelten Tabellen.
Im Gegensatz zu verschachtelten Tabellen, für deren Speicherung eine externe Tabelle erforderlich ist, werden VARRAYs inline mit ihrem übergeordneten Datensatz als Rohwert in der übergeordneten Tabelle gespeichert. Es bedeutet, dass keine STORE AS-Klausel mehr benötigt wird. Oh, was für eine Erleichterung, keine unnötigen IOs und obendrein noch mehr Performance.
Können wir VARRAYs speichern und wiederverwenden?
Ähnlich wie verschachtelte Tabellen sind VARRAYs persistente Sammlungstypen, was bedeutet, dass sie als Datenbankobjekte erstellt werden können, die für die spätere Verwendung gespeichert werden können. VARRAYs können auch als Mitglied von PL/SQL-Blöcken erstellt werden. Der Gültigkeitsbereich des VARRAY, das innerhalb eines PL/SQL-Blocks deklariert wird, ist auf den Block beschränkt, in dem es erstellt wird.
Sind VARRAYs begrenzt oder unbegrenzt?
Im Gegensatz zu verschachtelten Tabellen sind VARRAYs eine begrenzte Form der Sammlung. Mit begrenzt meine ich, dass Sie entscheiden müssen, wie viele Elemente Sie in Ihrer Sammlung speichern möchten, während Sie sie deklarieren. Dagegen gibt es in verschachtelten Tabellen, die eine unbegrenzte Sammlungsart sind, keine Obergrenze für die Anzahl der Elemente.
VARRAYs Speichermechanismus
Der Speichermechanismus von VARRAYs ist der größte Unterschied, der sie zu einer besseren Wahl als verschachtelte Tabellen macht. Im Gegensatz zu verschachtelten Tabellen, für deren Speicherung eine externe Tabelle erforderlich ist, werden VARRAYs inline mit ihrem übergeordneten Datensatz als Rohwert in der übergeordneten Tabelle gespeichert. Dies bedeutet, dass keine STORE AS-Klausel oder eine separate Speichertabelle erforderlich ist.
Die Inline-Speicherung von VARRAYs trägt dazu bei, die Ein-/Ausgänge (I/O) auf der Festplatte zu reduzieren, wodurch VARRAYs leistungseffizienter sind als verschachtelte Tabellen. Aber wenn VARRAYs 4K-Daten überschreiten, folgt Oracle dem Out-of-Line-Speichermechanismus und speichert VARRAYs als LOB.
Syntax zum Erstellen von PL/SQL-VARRAYs
In diesem Abschnitt sehen wir die Syntax zum Erstellen von VARRAYs als
- Datenbankobjekt und
- Mitglied des PL/SQL-Blocks.
Sie können auf meinem YouTube-Kanal zum Video zum selben Thema gehen, in dem ich diese beiden Syntaxen ausführlich erklärt habe.
VARRAY als Datenbankobjekt
CREATE [OR REPLACE] TYPE type_name IS {VARRAY | VARYING ARRAY} (size_limit) OF element_type;
VARRAY als Mitglied des PL/SQL-Blocks
DECLARE TYPE type_name IS {VARRAY | VARYING ARRAY} (size_limit) OF element_type;
Beide obigen Syntaxen sind die gleichen wie bei der verschachtelten Tabelle, außer dass wir hier eine zusätzliche Klausel haben, die Size_Limit ist. Die Größenbeschränkung ist eine numerische Ganzzahl, die die maximale Anzahl von Elementen angibt, die Ihr VARRAY aufnehmen kann.
Denken Sie immer daran, dass wir ähnlich wie bei verschachtelten Tabellen VARRAY nur im Deklarationsabschnitt des PL/SQL-Blocks deklarieren können.
Wie ändere ich die Größenbeschränkung der VARRAYs-Typsammlung?
Die Größenbeschränkung eines VARRAY kann mit der DDL-Anweisung ALTER TYPE geändert werden.
ALTER TYPE type_name MODIFY LIMIT new-size-limit [INVALIDATE | CASCADE]
Wo:
TYP ÄNDERN ist ein reservierter Ausdruck, der dem Compiler anzeigt, welche DDL-Aktion Sie ausführen möchten.
NAMEN EINGEBEN ist der Name des Typs, den Sie ändern möchten.
LIMIT ÄNDERN ist eine Klausel, die den Compiler darüber informiert, dass der Benutzer die Größenbeschränkung ändern möchte.
NEUES-GRÖSSEN-LIMIT ist eine Ganzzahl, die die neue Größenbeschränkung Ihres VARRAYs sein wird.
INVALIDIEREN Klausel ist eine optionale Klausel, die alle abhängigen Objekte ohne Überprüfungsmechanismus ungültig macht.
CASCADE-Klausel ist wiederum eine optionale Klausel, die Änderungen an abhängigen Typen und Tabellen weitergibt.
Wie lösche ich eine Sammlung vom Typ VARRAY?
Um einen VARRAY-Typ zu löschen, können Sie Hilfe von der DROP DDL-Anweisung nehmen.
DROP TYPE type_name [FORCE];
Wo:
Drop-Typ
Ist eine DDL-Anweisung, mit der Sie jeden in Ihrer Datenbank erstellten Typ löschen können.
Name eingeben
Typname ist der Name eines bereits erstellten Typs, den Sie löschen möchten.
Erzwingen
Geben Sie FORCE an, um den Typ zu löschen, selbst wenn er abhängige Datenbankobjekte hat. Oracle Database markiert UNUSED alle Spalten, die vom zu löschenden Typ abhängig sind, und auf diese Spalten kann nicht mehr zugegriffen werden. Denken Sie daran, dass dieser Vorgang nicht wiederherstellbar ist und dazu führen kann, dass auf die Daten in den abhängigen Tabellen oder Spalten nicht mehr zugegriffen werden kann.
Ich hoffe, Sie haben etwas Neues gelernt. Jetzt können Sie Ihr Wissen zu diesem Thema testen, indem Sie hier einen Test machen. Bitte helfen Sie uns beim Wachstum, indem Sie diesen Blog in Ihren sozialen Netzwerken teilen. Auf diese Weise können Sie auch Ihren Freunden beim Lernen helfen. Vielen Dank und einen schönen Tag!