sql >> Databasteknik >  >> RDS >> Oracle

Introduktion till PL/SQL VARRAYs i Oracle Database

VARRAYs lanserades i Oracle 8i redan 1998 som en modifierad version av Nested table type collection som vi har diskuterat i tidigare bloggar.

Föreslagen läsning:Hur man skapar kapslade tabeller –

  • Som PL/SQL-blockelement
  • Som databasobjekt
  • Använder användardefinierad datatyp

Nu kan du också testa dina kunskaper i ämnet genom att göra ett test här.

VARRAY är ett viktigt ämne eftersom det i allmänhet alltid finns en fråga om det i certifieringsprovet. För att minimera eventuell förvirring kommer vi först att ta en kort titt på inledningen av VARRAYs kollektion.

VARRAYs som är en förkortning av Variable Sized Arrays introducerades i Oracle 8i redan 1998 som ett modifierat format av kapslade tabeller. De stora ändringarna kan ses i lagringsorientering. Det finns inga märkbara förändringar i implementeringen men deras lagringsorientering är helt annorlunda jämfört med de kapslade tabellerna.

Till skillnad från kapslade tabeller som kräver en extern tabell för sin lagring, VARRAYs lagras i linje med sin överordnade post som råvärde i den överordnade tabellen. Det betyder att du inte längre behöver STORE AS-klausulen. Åh, vilken lättnad, inga onödiga IO och dessutom ökad prestanda.

Kan vi spara och återanvända VARRAY?

Liknar kapslade tabeller VARRAYs är beständig typ av samling vilket innebär att de kan skapas som databasobjekt som kan sparas för senare användning. VARRAYs kan också skapas som medlem i PL/SQL-block. Omfattningen av VARRAY som deklareras inuti ett PL/SQL-block är begränsat till blocket där det skapas.

Är VARRAYs avgränsade eller obegränsade?

Till skillnad från kapslade bord är VARRAYs avgränsade form av samling. Med begränsad menar jag, du måste bestämma hur många element du vill lagra i din samling samtidigt som du deklarerar den. Medan det i kapslade tabeller, som är en ogränsad samlingstyp, inte finns något övre tak för antalet element.

VARRAYs lagringsmekanism

Lagringsmekanismen för VARRAYs är den största skillnaden vilket gör dem till ett överlägset val än kapslade bord. Till skillnad från kapslade tabeller som kräver en extern tabell för sin lagring, lagras VARRAYs i linje med sin överordnade post som råvärde i den överordnade tabellen. Detta betyder att det inte finns något krav på STORE AS-klausul eller separat lagringstabell.

In-line-lagringen av VARRAYs hjälper till att reducera diskingångar/utgångar (I/O) vilket gör VARRAYs mer prestandaeffektiva än kapslade tabeller. Men när VARRAYs överstiger 4K-data följer Oracle out-of-line lagringsmekanism och lagrar VARRAYs som en LOB.

Syntax för att skapa PL/SQL VARRAYs

I det här avsnittet kommer vi att se syntaxen för att skapa VARRAYs som

  • Databasobjekt och
  • Medlem i PL/SQL-blocket.

Du kan gå till videon om samma ämne på min YouTube-kanal där jag förklarade båda dessa syntax i detalj.

VARRAY som databasobjekt

CREATE [OR REPLACE] TYPE type_name
IS {VARRAY | VARYING ARRAY} (size_limit) OF element_type;

VARRAY som medlem i PL/SQL Block

DECLARE
TYPE type_name IS {VARRAY | VARYING ARRAY} (size_limit) OF
element_type;

Båda ovanstående syntaxer är samma som för kapslade tabeller, förutom här har vi en extra klausul som är Size_Limit. Storleksgränsen är ett numeriskt heltal som anger det maximala antalet element som din VARRAY kan hålla.

Kom alltid ihåg att liknande kapslade tabeller kan vi endast deklarera VARRAY i deklarationssektionen i PL/SQL-blocket.

Hur ändrar man storleksgränsen för VARRAYs typsamling?

Storleksgränsen för en VARRAY kan ändras med ALTER TYPE DDL-satsen.

ALTER TYPE type_name MODIFY LIMIT new-size-limit [INVALIDATE | CASCADE]

Var:

ÄNDRA TYP är en reserverad fras som indikerar för kompilatorn vilken DDL-åtgärd du vill utföra.

TYP NAMN är namnet på typen som du vill ändra.

ÄNDRA GRÄNS är en klausul som informerar kompilatorn om att användaren vill ändra storleksgränsen.

NEW-SIZE-LIMIT är ett heltal som kommer att vara den nya storleksgränsen för din VARRAY.

OGILTIG klausul är en valfri klausul som gör alla beroende objekt ogiltig utan någon kontrollmekanism.

CASCADE-sats återigen är en valfri klausul som kommer att sprida ändringar till beroende typer och tabeller.

 

Hur släpper man en samling av VARRAY-typ?

För att ta bort en VARRAY-typ kan du ta hjälp av DROP DDL-satsen.

DROP TYPE type_name [FORCE];

Var:

Släpptyp

Är en DDL-sats med vilken du kan släppa vilken typ som helst som skapats i din databas.

Skriv namn

Typnamn är namnet på en redan skapad typ som du vill ta bort.

Tvinga

Ange FORCE för att ta bort typen även om den har beroende databasobjekt. Oracle Database markerar OANVÄND alla kolumner beroende på vilken typ som ska tas bort, och dessa kolumner blir oåtkomliga. Kom ihåg att denna operation inte kan återställas och kan göra att data i de beroende tabellerna eller kolumnerna blir oåtkomliga.

Hoppas du lärde dig något nytt. Nu kan du testa dina kunskaper i ämnet genom att göra ett test här. Hjälp oss att växa genom att dela den här bloggen på din sociala sida. På så sätt kan du också hjälpa dina vänner att lära. Tack och ha en bra dag!


  1. SQL-nätverksgränssnitt, fel:50 - Runtime-fel för lokal databas uppstod. Det går inte att skapa en automatisk instans

  2. Pyodbc - Datakällans namn hittades inte och ingen standarddrivrutin har angetts

  3. Hur skriver man DataFrame till postgres-tabellen?

  4. Hur man formaterar siffror som valuta i MySQL