sql >> Database teknologi >  >> RDS >> Oracle

PL/SQL-samling:Indlejret tabel i Oracle-database

Sådan opretter du indlejret tabel inde i PL/SQL-blok

Velkommen til den anden tutorial i PL/SQL Collection-serien. I denne tutorial lærer vi den første type samling, der er "Indlejret bord". En tabel inde i en tabel er den enkleste definition, man kan finde på, og den er korrekt på alle måder, fordi en tabel, der er indlejret i en anden tabel, er præcis, hvad navnet indlejret tabel antyder.

Men hvis vi skal definere samlingen 'Indlejret bord' på en mere fancy og teknisk måde, kan vi sige, at indlejrede tabeller er endimensionelle strukturer, der er vedvarende og ubegrænsede i naturen. De er tilgængelige i SQL såvel som PL/SQL og kan bruges i tabeller, poster og objektdefinitioner. Da det er en ubegrænset PL/SQL-samling, kan den derfor indeholde et hvilket som helst antal elementer i et tilfældigt ordnet sæt.

Definition
Indlejrede tabeller er endimensionelle strukturer, der er vedvarende og ubegrænsede i naturen. De er tilgængelige i SQL såvel som PL/SQL og kan bruges i tabeller, poster og objektdefinitioner. Da det er en ubegrænset PL/SQL-samling, kan den derfor indeholde et vilkårligt antal elementer i et uordnet sæt.

Foreslået læsning:Introduktion til PL/SQL-samling

En indlejret tabel kan oprettes inde i PL/SQL-blokken eller i databasen som et samlingsobjekt (Schema Object). I tilfælde af den tidligere indlejrede tabel opfører sig som en endimensional matrix uden nogen indekstype eller nogen øvre grænse.

Så lad os indtil videre koncentrere os om, hvordan man opretter Nested Table inde i PL/SQL-blokken og overlader resten til næste selvstudie.

Syntaks til oprettelse af indlejrede tabel

DECLRE 
TYPE nested_table_name IS TABLE OF element_type [NOT NULL];

Jeg har forklaret denne syntaks i detaljer i min videotutorial på min YouTube-kanal. Jeg anbefaler dig stærkt at henvise til den video.

Eksempel:Hvordan opretter man indlejret tabel inde i en PL/SQL-blok?

Følgende eksempel er kun til at demonstrere, hvordan man opretter indlejrede tabel, der er ikke noget fancy ved det.

SET SERVEROUTPUT ON;
DECLARE
   TYPE my_nested_table   IS TABLE OF number;
    var_nt  my_nested_table :=  my_nested_table (9,18,27,36,45,54,63,72,81,90);
BEGIN
   DBMS_OUTPUT.PUT_LINE ('Value Stored at index 1 in NT is ' ||var_nt (1)); 
   DBMS_OUTPUT.PUT_LINE ('Value Stored at index 2 in NT is ' ||var_nt (2));
   DBMS_OUTPUT.PUT_LINE ('Value Stored at index 3 in NT is ' ||var_nt (3));
END;
 /

Ovenstående eksempel er et meget simpelt, hvor vi oprettede en indlejret tabel og gav den navnet 'min_indlejrede_tabel' (linjenummer 3). I den næste linje (linje nummer 4) oprettede vi en instans af den samme samling og brugte den til at initialisere den indlejrede tabel og gemme nogle data i den. I udførelsessektionen får vi adgang til de lagrede data individuelt ved hjælp af indeksnummeret, på samme måde som vi plejede at gøre i arrays.

I stedet for at få adgang til data én efter én manuelt ved hjælp af indeks, kan vi bruge loops og cykle gennem hvert element i den indlejrede samlingstabell.

 SET SERVEROUTPUT ON;
 DECLARE
   TYPE my_nested_table   IS TABLE OF number;
   var_nt  my_nested_table :=  my_nested_table (9,18,27,36,45,54,63,72,81,90);
 BEGIN
   FOR i IN 1..var_nt.COUNT
   LOOP
     DBMS_OUTPUT.PUT_LINE ('Value stored at index '||i||'is '||var_nt(i));
   END LOOP;
 END;
 /

Det er endnu et eksempel på, hvordan man opretter indlejret tabel, hvori vi går gennem dataene og viser dem tilbage til brugeren ved hjælp af For Loop.

Det handler om, hvordan man opretter indlejrede tabeller i PL/SQL-blokke. Hold dig opdateret, da vi i næste selvstudie lærer, hvordan du opretter indlejrede tabeller som databasesamlingsobjekter, og hvilke dataordbogsvisninger du kan bruge til at få oplysninger om de indlejrede tabeller, der er gemt i din database.

Det er alt. Tak fordi du læste med og hav en god dag!


  1. RUC eller RUR?

  2. Brug af Percona Audit Log Plugin til databasesikkerhed

  3. Hvad jeg gerne vil se i Amazon EC2 for Database Management

  4. MyBatis Indsæt listeværdier