VARRAYs blev lanceret i Oracle 8i tilbage i 1998 som en modificeret version af Nested table type collection, som vi har diskuteret i de tidligere blogs.
Foreslået læsning:Sådan opretter du indlejret tabel –
- Som PL/SQL-blokelement
- Som databaseobjekt
- Brug af brugerdefineret datatype
Også nu kan du teste din viden om emnet ved at tage en test her.
VARRAY er et vigtigt emne, fordi det ses, at der generelt altid er et spørgsmål om det i certificeringseksamen. For at minimere enhver forvirring vil vi først tage et kort kig på introduktionen til VARRAYs kollektion.
VARRAYs, som er et akronym af Arrays med variabel størrelse blev introduceret i Oracle 8i tilbage i 1998 som et modificeret format af indlejrede tabeller. De største ændringer kan ses i opbevaringsorientering. Der er ingen mærkbare ændringer i implementeringen, men deres lagringsorientering er helt anderledes sammenlignet med de indlejrede tabeller.
I modsætning til indlejret tabel, som kræver en ekstern tabel til sin lagring, er VARRAYs gemt in-line med deres overordnede post som råværdi i den overordnede tabel. Det betyder ikke længere behov for STORE AS-klausulen. Åh, hvilken lettelse, ingen unødvendige IO'er og oven i købet øget ydeevne.
Kan vi gemme og genbruge VARRAY'er?
Svarende til indlejrede tabeller VARRAY'er er vedvarende type samling, hvilket betyder, at de kan oprettes som databaseobjekt, der kan gemmes til senere brug. VARRAY'er kan også oprettes som medlem af PL/SQL Blocks. Omfanget af VARRAY, som er erklæret inde i en PL/SQL-blok, er begrænset til den blok, hvori den er oprettet.
Er VARRAY'er begrænset eller ubegrænset?
I modsætning til indlejrede bord er VARRAY'er afgrænset form for samling. Med begrænset mener jeg, du skal beslutte, hvor mange elementer du vil gemme i din samling, mens du erklærer den. Mens der i indlejret tabel, som er en ubundet samlingstype, ikke er nogen øvre grænse for antallet af elementer.
VARRAYs opbevaringsmekanisme
Opbevaringsmekanismen for VARRAYs er den største forskel, hvilket gør dem til et overlegent valg end indlejrede borde. I modsætning til indlejrede tabeller, som kræver en ekstern tabel til sin lagring, gemmes VARRAY'er in-line med deres overordnede post som råværdi i den overordnede tabel. Dette betyder, at der ikke er noget krav om STORE AS-klausul eller separat lagertabel.
Den in-line-lagring af VARRAY'er hjælper med at reducere disk-input/-udgange (I/O), hvilket gør VARRAY'er mere effektive end indlejrede tabeller. Men når VARRAY'er overstiger 4K-data, følger Oracle out-of-line lagermekanisme og gemmer VARRAY'er som en LOB.
Syntaks til oprettelse af PL/SQL VARRAY'er
I dette afsnit vil vi se syntaksen for at oprette VARRAY'er som
- Databaseobjekt og
- Medlem af PL/SQL Block.
Du kan gå over til videoen om det samme emne på min YouTube-kanal, hvor jeg forklarede begge disse syntaks i detaljer.
VARRAY som databaseobjekt
CREATE [OR REPLACE] TYPE type_name IS {VARRAY | VARYING ARRAY} (size_limit) OF element_type;
VARRAY som medlem af PL/SQL Block
DECLARE TYPE type_name IS {VARRAY | VARYING ARRAY} (size_limit) OF element_type;
Begge de ovennævnte syntakser er de samme som for indlejrede tabel, bortset fra at her har vi en ekstra klausul, som er Size_Limit. Størrelsesgrænse er et numerisk heltal, som angiver det maksimale antal elementer, din VARRAY kan indeholde.
Husk altid i lighed med indlejret tabel, vi kan kun erklære VARRAY i deklarationssektionen af PL/SQL-blokken.
Hvordan ændres størrelsesgrænsen for VARRAYs typesamling?
Størrelsesgrænsen for en VARRAY kan ændres ved hjælp af ALTER TYPE DDL-sætning.
ALTER TYPE type_name MODIFY LIMIT new-size-limit [INVALIDATE | CASCADE]
Hvor:
ÆNDRINGSTYPE er en reserveret sætning, der angiver over for compileren, hvilken DDL-handling du vil udføre.
TYPE NAVN er navnet på den type, du vil ændre.
ÆNDRING AF GRÆNSE er en klausul, som informerer compileren om, at brugeren ønsker at ændre størrelsesgrænsen.
NEW-SIZE-LIMIT er et heltal, som vil være den nye størrelsesgrænse for din VARRAY.
UGYLDIG klausul er en valgfri klausul, som vil ugyldiggøre alle afhængige objekter uden nogen kontrolmekanisme.
CASCADE-sætning igen er en valgfri klausul, som vil udbrede ændringer til afhængige typer og tabel.
Hvordan dropper man en VARRAY-typesamling?
For at droppe en VARRAY-type kan du få hjælp fra DROP DDL-sætning.
DROP TYPE type_name [FORCE];
Hvor:
Droptype
Er en DDL-sætning, som du kan bruge til at droppe enhver type, der er oprettet i din database.
Skriv navn
Typenavn er navnet på en allerede oprettet type, som du vil slette.
Tving
Angiv FORCE for at slette typen, selvom den har afhængige databaseobjekter. Oracle Database markerer UNUSED alle kolonner afhængigt af typen, der skal slettes, og disse kolonner bliver utilgængelige. Husk, at denne handling ikke kan gendannes og kan forårsage, at dataene i de afhængige tabeller eller kolonner bliver utilgængelige.
Håber du har lært noget nyt. Nu kan du teste din viden om emnet ved at tage en test her. Hjælp os med at vokse ved at dele denne blog på dit sociale netværk. På den måde kan du også hjælpe dine venner med at lære. Tak og god dag!