sql >> Database >  >> RDS >> Oracle

FORALL-instructie met onder- en bovengrens in Oracle Database

FORALL-verklaring met onderste en bovenste clausule

In de vorige tutorial hebben we geleerd dat er drie gebonden clausules zijn die we kunnen gebruiken met de FORALL-instructie om de DML-query's te optimaliseren. Van die drie gebonden clausules zullen we in deze zelfstudie de eerste, d.w.z. onder- en bovengrens, onderzoeken.

Wat is de Lower &Upper Bound-clausule van de FORALL-instructie?

Zoals de naam al doet vermoeden, moeten we met de Lower &Upper Bound-clausule het geldige bereik van opeenvolgende indexnummers van de verzameling specificeren.

Is er een regel voor het gebruik van de Lower &Upper Bound-clausule met de FORALL-instructie?

Lower &Upper Bound-clausule kan alleen worden gebruikt als de verzameling waarnaar u verwijst in uw DML-instructie Dense is . Als de verwijzende verzameling schaars is, wil je misschien andere gebonden clausules gebruiken die we in de toekomstige tutorials zullen bespreken.

Om uw programma succesvol te laten uitvoeren, moet u ervoor zorgen dat u alle regels van de FORALL-verklaring hebt gevolgd, samen met de bovengenoemde regel van de onder- en bovengrensclausule. Lees hier meer over de FORALL-verklaring.

Laten we een voorbeeld doen van een FORALL-instructie met een Lower &Upper Bound-clausule in Oracle Database.

Maar voordat we naar het voorbeeld springen, moeten we één ding begrijpen; FORALL-instructie doet hetzelfde werk als de bulkcollect-clausule, maar op een omgekeerde manier. Bij bulkcollect haalden we bijvoorbeeld de gegevens uit de tabellen en sloegen deze op in de verzameling, maar nu met het FORALL-statement halen we de gegevens op uit de verzameling en slaan deze op in de tabel.

In deze demonstratie zullen we drie dingen doen om het concept van de FORALL-verklaring met de Lower &Upper Bound-clausule te begrijpen. Deze drie dingen zijn:

  1. Maak een tabel.

Eerst gaan we een tabel maken. We zullen deze tabel gebruiken om de gegevens te dumpen die we uit de verzameling gaan halen.

  1. Creëer en vul de collectie.

Deze stap is optioneel als u al een verzameling met enkele gegevens heeft. Als je dat niet doet, volg me dan. Voor de demonstratie zal ik een collectie maken en vullen.

  1. Schrijf de FORALL-instructie.

Zodra u uw tafel en verzameling gereed hebt, schrijft u de FORALL-verklaring. Voor de demonstratie zal ik een FORALL-instructie schrijven die de gegevens uit de verzameling zal ophalen en in de tabel zal opslaan. Dat zal ook een demonstratie zijn van het FORALL-statement met INSERT DML.

Laten we het voorbeeld nemen van de PL/SQL FORALL-instructie met onder- en bovengrens.

SET SERVEROUTPUT ON;
CREATE TABLE tut_77 (
    Mul_tab    NUMBER(5)
);

Dat wordt onze tabel die de gegevens zal bevatten. Vervolgens gaan we het PL/SQL-blok schrijven.

DECLARE
	-- Declare the collection
    TYPE My_Array IS TABLE OF NUMBER INDEX BY PLS_INTEGER;
    col_var My_Array;
	--Declare a variable for holding the total number of records of the table
    tot_rec NUMBER;
BEGIN
    --Populate the collection
    FOR i IN 1..10 LOOP
        col_var (i) := 9*i;
    END LOOP;
    -- Write the FORALL statement.
    FORALL idx IN 1..10
        INSERT INTO tut_77 (mul_tab)
        VALUES (col_var (idx));
    --Get the total number of records from the table     
    SELECT count (*) INTO tot_rec FROM tut_77;
    DBMS_OUTPUT.PUT_LINE ('Total records inserted are '||tot_rec);
END;
/

Uitleg van de sectie Verklaring

In het declaratiegedeelte van deze code hebben we een associatieve array gedeclareerd met de naam "my_Array" samen met zijn verzamelingsvariabele. Ook een extra variabele met de naam tot_rec van het datatype Number. Deze variabele bevat het totale aantal records dat in onze tabel is opgeslagen.

In de uitvoeringssectie hebben we drie taken uitgevoerd. Ten eerste hebben we met behulp van de FOR-lus onze verzameling gevuld met de vermenigvuldigingstabel van 9. Ten tweede hebben we met behulp van de FORALL-instructie de gegevens uit de verzameling genomen en deze opgeslagen in de tabel die we hebben gemaakt. Ten derde hebben we met behulp van de variabele tot_rec met de SELECT-INTO-instructie het totale aantal rijen weergegeven dat in de tabel is opgeslagen.

Ik heb ook een video gemaakt over hetzelfde onderwerp waarin ik deze bovenstaande code regel voor regel in detail heb uitgelegd. Ik raad je aan om het te bekijken.

Dat is de tutorial over PL/SQL FORALL-statement met Lower &Upper Bound-clausule in Oracle Database. Ik hoop dat je het leuk vond om te kijken. Zorg ervoor dat je deze blog leuk vindt en deelt met je vrienden op je sociale media. Je kunt me ook bereiken op mijn Facebook-pagina.

Bedankt en een fijne dag verder.


  1. Hoe ERROR 1130 (HY000) op te lossen:Host mag geen verbinding maken met deze MySQL-server

  2. Waarden invoegen in een IDENTITY-kolom in SQL Server

  3. SQL LIKE-operator voor beginners

  4. Verklaringen voorbereiden en parameters binden in Postgresql voor C++