Zweck der Verwendung von verschiedenen Arten von PL/SQL-collections in Oracle
Was ist der Hauptzweck der Verwendung von Sammlungen in oracle ?
- Index von Tabellen
- Geschachtelte Tabellen
- Variable-size ARRAY
Kannst du bitte erklären den Unterschied zwischen den oben genannten Arten von Sammlungen ?
Lesen Sie den Oracle docs hier: docs.oracle.com/cd/B28359_01/appdev.111/b28370/...
Sie könnten die Flagge, die Antwort so akzeptiert plz ?
Sie könnten die Flagge, die Antwort so akzeptiert plz ?
InformationsquelleAutor Madhav | 2013-02-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beginnen wir mit Verschachtelten Tabellen, Sie sind die häufigste form der Sammlung und so stellen eine nützliche Grundlage für den Vergleich.
Eine verschachtelte Tabelle ist eine variable kann mehr als eine Instanz von etwas, oft einen Datensatz aus einer Datenbank-Tabelle. Sie könnte erklärt werden, wie diese:
Sind Sie hilfreich, Wann immer wir wollen, zu speichern, mehrere Instanzen von Daten, gegen die wir möchten, das gleiche zu tun. Das klassische Beispiel ist die Verwendung von BULK COLLECT zu speichern mehrerer Datensätze:
Dies gibt uns eine Quelle der Daten können wir die Schleife Runde; entscheidend ist, können wir navigieren Sie nach hinten als auch nach vorne, sogar überspringen, um das Ende oder der Anfang, die Dinge, die wir nicht mit einem cursor. Verschachtelte Tabellen können Sammlungen von Daten, Art, einschließlich Verbundwerkstoffe, wie beispielsweise PL/SQL-records oder benutzerdefinierte Typen.
Einen Index Tabelle ist besser (als die docs tun) ein Assoziatives Array . Dies sind einfache Sammlungen von einzelne Attribute mit einem index. Auch geschachtelte Tabellen über Indizes verfügen, die aber Ihre Indizes werden einfach Zeile zählt. Mit einem assoziativen array mit dem index kann es sinnvoll sein, d.h. stammen von einer Daten-Wert. So sind Sie nützlich für die Zwischenspeicherung von Daten Werte für die spätere Verwendung. Der index kann eine Zahl sein, oder (da 9iR2) eine Zeichenkette, die sehr nützlich sein können. Zum Beispiel, hier ist ein assoziatives array von Gehältern, das ist indiziert durch die Mitarbeiter-id.
Beachten Sie, dass ich könnte haben erklärt, dass Arrays mit INDEX BY BINARY_INTEGER, aber es ist übersichtlicher für die Verwendung des %TYPE-syntax statt (self-documenting code). Elemente dieses Arrays können identifiziert werden, indem ein index-Wert, in diesem Fall EMPNO:
Andere als caching-Referenz-Tabellen oder ähnliches look-up-Werte gibt es nicht viele Anwendungsfälle für assoziative arrays.
Variable, arrays sind einfach nur verschachtelte Tabellen mit einem vordefinierten Grenzwert für die Anzahl der Elemente. Also vielleicht ist der name irreführend ist: Sie sind tatsächlich Feste arrays. Es gibt wenig, was wir tun können, mit VArrays, die wir nicht tun können mit geschachtelten Tabellen (außer begrenzen Sie die Anzahl der Elemente und es ist ziemlich selten, dass wir das tun wollen). Sie erklärte wie diese:
Können wir mithilfe von bulk sammeln, zum Auffüllen eines VArray ...
Jedoch müssen wir sicher sein, dass die Abfrage bei den meisten wird die Anzahl der Elemente angegeben, die in der VArray in der Erklärung. Ansonsten ist die SELECT-schleudern ORA-22165.
Gibt es keine bekannten Anwendungsfälle für die variable arrays. Okay, ist ein bisschen hart, aber fast die ganze Zeit verwenden Sie geschachtelte Tabellen statt. Der eine große Vorteil von VArrays über verschachtelten Tabellen ist, dass Sie Garantie für die Reihenfolge der Elemente. Also, wenn Sie müssen Elemente in der gleichen Reihenfolge wie Sie eingefügt haben, verwenden Sie ein VArray.
Den PL/SQL-Dokumentation widmet ein ganzes Kapitel zu Sammlungen. Erfahren Sie mehr.
mytab(3)
nicht plötzlich gehen, um die Plätze zu tauschen mitmytab(2)
. Auch vielleicht erwähnenswert, dass Sie nicht verwenden können, eine der multiset-Operatoren oder Bedingungen mit varrays.laut [die Dokumentation] "Die Indizes und Zeile um eine geschachtelte Tabelle kann nicht stabil bleiben, wie Sie speichern und abrufen der geschachtelten Tabelle aus der Datenbank"
Ah, das ist so was, etwas bedeutet. Nicht so viel von einer Sorge um die PL/SQL-Programmierer mit der Sammlung von Variablen, obwohl, was ich denke, ist der Kontext dieser Frage.
InformationsquelleAutor APC
PL/SQL bietet diese Sammlung-Typen: -
Assoziative arrays, auch bekannt als index-by-tables, lassen Sie look-up-Elemente mit beliebigen zahlen-und Zeichenfolgen für die index-Werte. Diese sind ähnlich wie hash-Tabellen, die in anderen Programmiersprachen.
Verschachtelte Tabellen enthalten eine beliebige Anzahl von Elementen. Verwenden Sie fortlaufende Nummern als Indizes. Definieren Sie entsprechende SQL-Typen, so dass verschachtelte Tabellen werden in Datenbanktabellen gespeichert und manipuliert durch SQL.
Varrays (kurz für " variabel-size-arrays) halten eine Feste Anzahl von Elementen (obwohl Sie können ändern, die Anzahl der Elemente zur Laufzeit). Verwenden Sie fortlaufende Nummern als Indizes. Definieren Sie entsprechende SQL-Typen, so dass varrays werden in Datenbanktabellen gespeichert. Sie können gespeichert und abgerufen werden über SQL, aber mit weniger Flexibilität als verschachtelte Tabellen.
1. Die Wahl Zwischen den Verschachtelten Tabellen und Assoziative Arrays:-
Sowohl verschachtelte Tabellen und assoziativen arrays (früher bekannt als index-Tabellen) verwenden ähnliche subskript-notation, aber Sie haben unterschiedliche Eigenschaften, wenn es um Dauerhaftigkeit und Leichtigkeit der Parameterübergabe.
Geschachtelte Tabellen gespeichert werden können in einer Datenbank-Spalte, aber die assoziativen arrays können nicht. Geschachtelte Tabellen vereinfachen kann SQL-Operationen, wo Sie normalerweise begleiten Sie eine einspaltige Tabelle mit einem größeren Tisch.
Assoziative arrays eignen sich für relativ kleine lookup Tabellen, wo die Sammlung gebaut werden kann in der Erinnerung jedes mal, wenn eine Prozedur aufgerufen wird, oder ein Paket initialisiert wird. Sie sind gut für das sammeln von information, deren Volumen ist im Voraus nicht bekannt, weil es keine Feste Grenze auf Ihre Größe. Ihre index-Werte sind flexibler, weil assoziatives array-Indizes negativ sein kann, kann nicht sequenziellen, und kann die Verwendung von string-Werten anstelle von zahlen.
PL/SQL konvertiert automatisch zwischen host-arrays und assoziative arrays benutzen, numerisch wichtige Werte. Der effizienteste Weg, um pass-Sammlungen und aus dem Datenbank-server einrichten-Daten-Werte in assoziative arrays, dann verwenden Sie die assoziative arrays, die mit der Masse Konstrukte (die FORALL-Anweisung oder BULK COLLECT-Klausel).
2. Die Wahl Zwischen Verschachtelte Tabellen und Varrays:-
Varrays sind eine gute Wahl, wenn:
Die Anzahl der Elemente im Voraus bekannt ist.
Die Elemente sind in der Regel alle erreichbar in der Reihenfolge.
Wenn in der Datenbank gespeichert, varrays halten Sie Ihre Bestell-und tiefgestellte Zeichen.
Jeder varray wird als einzelnes Objekt gespeichert werden, entweder in der Tabelle, von der es eine Spalte (wenn das varray ist weniger als 4KB) oder außerhalb der Tabelle aber noch im selben tablespace (wenn das varray ist größer als 4KB). Sie müssen aktualisieren oder abrufen aller Elemente von varray zur gleichen Zeit, was ist am besten geeignet, wenn die Durchführung eine operation auf alle Elemente auf einmal. Aber vielleicht finden es unpraktisch, zum speichern und abrufen einer großen Anzahl von Elementen auf diese Weise.
Verschachtelte Tabellen sind eine gute Wahl, wenn:
Die index-Werte sind nicht Folge.
Es gibt keine festgelegte Anzahl von index-Werte. Jedoch eine Obergrenze auferlegt wird.
Müssen Sie delete-oder update-einige Elemente, aber nicht alle Elemente auf einmal.
Würden Sie in der Regel erstellen Sie eine separate lookup-Tabelle, die mehrere Einträge für jede Zeile der Haupttabelle, und greifen Sie über join-Abfragen.
Verschachtelte Tabellen sind spärlich: Sie können das löschen beliebiger Elemente, anstatt einfach nur das entfernen eines Elements vom Ende.
Verschachtelte Tabelle Daten gespeichert in einer separaten Tabelle speichern, die eine vom system erzeugte Datenbank-Tabelle verbunden mit der geschachtelten Tabelle. Die Datenbank Verknüpfungen der Tabellen für Sie, wenn Sie den Zugriff auf die geschachtelte Tabelle. Dies macht geschachtelte Tabellen geeignet für die queries und updates, die nur auf einige Elemente der Kollektion.
Verlassen Sie sich nicht auf die um-und tiefgestellte Zeichen einer geschachtelten Tabelle ist stabil, wie die geschachtelte Tabelle gespeichert und aus der Datenbank abgerufen werden, weil die um-und tiefgestellte Zeichen sind nicht erhalten geblieben in der Datenbank.
InformationsquelleAutor shivaranjani
U verwenden können link
Was ist der Unterschied zwischen den verschachtelten Arrays und assoziativen Arrays?
oder einfach nur Lesen.
Einer geschachtelten Tabelle ist nur ein array mit n Elementen.
Einer geschachtelten Tabelle, muss die Tabelle initialisiert werden, wie gezeigt. Es hat keine Elemente, die auf den ersten. Das hinzufügen von Elementen, die wir verwenden, zu ERWEITERN. Diese verschachtelte Tabelle hat 10 Elemente. Sie sind indiziert von 1 bis 10. Element 1 den Wert 100. Die anderen haben den Wert null. Ein Zugriff auf ein nicht existierendes element, sagen die 11th element, löst einen Fehler aus.
Einem assoziativen array auf der anderen Seite ist ein array mit Namen/Wert-Paaren. Wir verwenden zahlen (pls_integer in der Regel) für die Namensgebung:
Ein assoziatives array braucht keine Initialisierung. Es ist leer und wird aufgefüllt. Hier bringen wir das element mit der Bezeichnung 1 mit dem Wert 100 und das element mit dem Namen 11 mit dem Wert 1000. So gibt es zwei Elemente in dem array. Wir bekommen keine Daten gefunden " - Ausnahme, wenn wir versuchen, auf einen Namen, der nicht im array.
Können wir auch die strings für die Namen:
Können Sie die beiden Sammlungen zu erhalten Tabelle Daten, aber Sie benutzen Sie anders. Die geschachtelte Tabelle eine Zählung, und Sie können nur Schleife von 1 bis count Zugriff auf seine Elemente:
Dem assoziativen array jedoch muss gelesen werden, was auch immer geschieht, der erste index auf den nächsten und nächsten und nächsten mit FIRST und NEXT.
Den "Namen" geschehen zu sein, 1, 2, 3 usw. hier (gegeben, so wird durch die bulk-Erfassung) und Sie könnte den Zugang v_my_associative_array(1) für die Instanz. Später im Programm, aber nach einige mögliche delete-Operationen in dem array, möglicherweise gibt es Lücken, so dass Sie nicht wissen, ob ein element mit dem Namen 1 vorhanden ist und ob das element vor dem element 4 passiert sein element 3. Als mit bulk collect "Namen" für die Elemente haben keine Bedeutung, würden Sie nicht wirklich nutzen Sie, aber gehen Sie stattdessen durch die Kette wie abgebildet.
InformationsquelleAutor Puneet Kushwah
Index von Tabellen, benutzerdefinierte Datentypen, die zum speichern von mehreren Daten. Grundsätzlich sind diese Tabellen sind uneingeschränkt Tabellen. Index by-Tabelle mit zwei teilen, diese sind Wert-Feld und das Feld Schlüssel ein. In der Wert Feld, oracle-server speichert die eigentlichen Daten, wo, wie in Schlüsselfeld oracle-server speichert, die Indizes, das ist, warum index by-Tabelle mit "key-value" Paare und auch Indizes, die von Standard-Ganzzahlen, und diese Indizes sind in zwischen negativen zu positiven zahlen. Dieses index-Feld verhält sich wie eine primäre Schlüssel, die es nicht akzeptieren doppelte Werte.
In der Regel index-Tabellen werden verwendet, um die Leistung zu verbessern oder die Anwendung, da diese Tabellen im Speicher gespeicherten Bereich, das ist, warum diese Tabellen sind auch als ein memory-Tabellen.
In der Regel verbessert die Leistung der Anwendung, die diese Tabelle Indizes mit binary-integer' Datentyp, so schaffen wir in zwei-Schritt-Prozess. Zuerst erstellen wir geben, nur dann erstellen wir eine variable von diesem Typ.
Syntax:-
Schritt 1:- Type Typname is table of Datentyp (Größe) index by binary_integer;
Schritt 2:- Variablename typename;
Für Morinformation >>>PL/SQL Index by-Tabellen (oder) - PL/SQL-Tabellen (oder), assoziative arrays
InformationsquelleAutor Dayakark
Einer Sammlung ist eine geordnete Gruppe von Elementen, die alle denselben Typ haben. Jedes element ist gekennzeichnet durch einen eindeutigen index, der darstellt, seine position in der Sammlung
PL/SQL bietet drei collection-Typen −
Index-Tabellen oder ein Assoziatives array
Geschachtelte Tabelle
Variable-size array oder Varray
InformationsquelleAutor Bharat Negi
Kernstück der Sammlung ist die Leistung der Anwendung verbessern. Mithilfe von Sammlungen können wir 'cache' statische Daten, auf die Häufig zugegriffen und geändert werden müssen. Dies führt zu einer Verringerung Aufrufe an eine Datenbank.
Auch, wenn Sie brauchen, um zu verarbeiten, eine Reihe von Gegenständen ähnlicher Art, die Speicherung dieser Elemente in einer Auflistung werden Ihnen erlauben, um eine Schleife durch jedes element mit Leichtigkeit, auf jede eine durch einen index.
Siehe diesen Artikel für mehr detail-Informationen über die Sammlung
InformationsquelleAutor Rahul M