Oracle
 sql >> Datenbank >  >> RDS >> Oracle

FORALL-Anweisung mit gebundener VALUES-OF-Klausel in der Oracle-Datenbank

Bisher haben wir gelernt, wie man die FORALL-Anweisung mit einer dichten Sammlung mit Lower &Upper-Bound-Klausel und einer spärlichen Sammlung mit INDICES OF-Bound-Klausel verwendet. Was ist, wenn wir die FORALL-Anweisung nur mit ausgewählten Elementen der Sammlung verwenden möchten? Können wir das tun? Ja, wir können das ganz einfach mit der FORALL-Anweisung mit der dritten und letzten gebundenen Klausel tun, die „VALUES-OF“ ist.

Was ist eine gebundene Klausel „Werte von“?

Bei der FORALL-Anweisung geht es darum, die Sammlungselemente auf optimierte Weise mit einer einzigen DML-Anweisung zu binden. Mit der gebundenen Klausel „Values-of“ der FORALL-Anweisung können wir die ausgewählten Elemente der Sammlung mit der DML-Anweisung binden.

Wie lautet die Syntax für die gebundene Klausel „Werte von“?

Bevor wir verstehen, wie Werte einer gebundenen Klausel funktionieren, werfen wir einen Blick auf ihre Syntax und lernen, wie die Klausel „Values-of“ mit der FORALL-Anweisung in Oracle Database syntaktisch korrekt verwendet wird.

FORALL idx IN VALUES OF indexing-collection
[Save exception]
DML/MERGE statement;

Info:
Denken Sie immer daran, dass der Name der Klausel VALUES-OF und nicht VALUE-OF ist. Das Schreiben von VALUE-OF führt zu einem Fehler, der Ihr Programm beenden könnte.
WERTE VON rechts
WERT VON falsch

Wie funktioniert die gebundene Values-of-Klausel?

Werte gebundener Klauseln erfordern zwei Sammlungen. Die erste Sammlung wird die „Quellsammlung“ sein . Wir werden DML-Operationen wie Einfügen, Löschen und Aktualisieren der Daten dieser Sammlung mit der FORALL-Anweisung durchführen.

Die zweite Sammlung ist die „Indizierungssammlung“. ’, die die Indexnummer der ausgewählten Elemente aus der ersten Sammlung angibt. Diese ausgewählten Elemente sind diejenigen Elemente, für die Sie die DML-Operationen ausführen möchten.

Als Values-of-bound-Klausel gibt an, dass der Wert der Variable Loop Index ('idx' in der obigen Syntax) der FORALL-Anweisung auf den Werten des Elements in der anderen Sammlung basiert. Daher haben wir diese andere Sammlung in der obigen Syntax als Indexing-Sammlung bezeichnet.

Was ist also diese Indizierungssammlung?

Die Indizierungssammlung ist eine Gruppe von Indizes, die die FORALL-Anweisung durchlaufen kann. Diese Sammlung könnte sowohl eine dichte Sammlung als auch eine spärliche Sammlung sein. Auch müssen die in der Sammlung gespeicherten Indexnummern nicht eindeutig sein und können in beliebiger Reihenfolge aufgelistet werden.

Gibt es Einschränkungen bei der Values-of-Klausel, über die wir Bescheid wissen sollten?

Ja, es gibt ein paar Dinge, die Sie wissen müssen, bevor Sie mit gebundenen Klauseln in Oracle Database arbeiten. Diese Einschränkungen sind –

  • Die Indizierungssammlung muss eine NESTED TABLE oder ein ASSOCIATIVE ARRAY sein.
  • Wenn die indizierende Sammlung ein assoziatives Array ist, muss sie durch PLS_INTEGER oder BINARY_INTEGER indiziert werden.
  • Die Elemente der Indizierungssammlung müssen entweder PLS_INTEGER oder BINARY_INTEGER sein.

Beispiel einer Values-of-gebundenen Klausel mit FORALL-Anweisung in Oracle Database:

Schritt 1:Tabelle erstellen

CREATE TABLE tut_79 (
    selected_data     NUMBER(5)
);

Schritt 2:Schreiben Sie einen PL/SQL-Block, der zeigt, wie die Values-of-Klausel mit der FORALL-Anweisung in Oracle Database verwendet wird.

SET SERVEROUTPUT ON;
DECLARE
    --Source collection
    TYPE My_NestedTable IS TABLE OF NUMBER;
    source_col My_NestedTable := My_NestedTable (9,18,27,36,45,54,63,72,81,90);
    
    --Indexing collection
    TYPE My_Array IS TABLE OF PLS_INTEGER INDEX BY PLS_INTEGER;
    index_col My_Array;
BEGIN
    --Initializing indexing collection with the index numbers.
    index_col   (1) :=  3;
    index_col   (5) :=  7;
    index_col   (12):=  8;
    index_col   (28):=  10;
    --FORALL statement 
    FORALL idx IN VALUES OF index_col
        INSERT INTO tut_79 VALUES (source_col (idx));
END;
/

Die ausführliche Erklärung dieses Codes können Sie sich im Video-Tutorial ansehen. Dort habe ich jede einzelne Zeile dieses PL/SQL-Blocks ausführlich erklärt.

Dies ist das Tutorial zur Verwendung der gebundenen Klausel Values ​​of mit der FORALL-Anweisung in Oracle Database. Ich hoffe, Sie finden es hilfreich. Bitte teilen Sie diesen Blog mit Ihren Freunden in ihren sozialen Medien. Abonnieren Sie auch meinen YouTube-Kanal für weitere informative und interessante Tutorials.

Danke und einen schönen Tag.