sql >> Database >  >> RDS >> Oracle

Inleiding tot PL/SQL VARRAY's in Oracle Database

VARRAY's werden in 1998 in Oracle 8i gelanceerd als een aangepaste versie van de verzameling geneste tabeltypes die we in de vorige blogs hebben besproken.

Aanbevolen literatuur:Hoe maak je een geneste tabel -

  • Als PL/SQL Block-element
  • Als database-object
  • Gebruikergedefinieerd gegevenstype gebruiken

U kunt nu ook uw kennis over het onderwerp testen door een test te doen hier.

VARRAY is een belangrijk onderwerp omdat men ziet dat er over het algemeen altijd een vraag over wordt gesteld tijdens het certificeringsexamen. Om verwarring te voorkomen zullen we eerst even kort de intro van de VARRAY's collectie bekijken.

VARRAYs wat een acroniem is van Variable Sized Arrays werden in 1998 geïntroduceerd in Oracle 8i als een gewijzigde indeling van geneste tabellen. De belangrijkste wijzigingen zijn te zien in de opslagoriëntatie. Er zijn geen merkbare veranderingen in de implementatie, maar hun opslagoriëntatie is compleet anders in vergelijking met de geneste tabellen.

In tegenstelling tot geneste tabel waarvoor een externe tabel nodig is voor opslag, worden VARRAY's in-line opgeslagen met hun bovenliggende record als onbewerkte waarde in de bovenliggende tabel. Het betekent dat er geen STORE AS-clausule meer nodig is. Oh, wat een verademing, geen onnodige IO's en daarbovenop nog betere prestaties.

Kunnen we VARRAY's opslaan en hergebruiken?

Net als bij geneste tabellen, zijn VARRAY's een persistent type verzameling, wat betekent dat ze kunnen worden gemaakt als databaseobject dat kan worden opgeslagen voor later gebruik. VARRAY's kunnen ook worden gemaakt als lid van PL/SQL-blokken. Het bereik van de VARRAY die in een PL/SQL-blok wordt gedeclareerd, is beperkt tot het blok waarin het is gemaakt.

Zijn VARRAY's begrensd of onbegrensd?

In tegenstelling tot geneste tabellen zijn VARRAY's een begrensde vorm van verzameling. Met begrensd bedoel ik, je moet beslissen hoeveel elementen je in je verzameling wilt opslaan terwijl je deze declareert. Terwijl in een geneste tabel die een onbegrensd type verzameling is, er geen bovenlimiet is voor het aantal elementen.

VARRAY's opslagmechanisme

Het opslagmechanisme van VARRAY's is het grootste verschil, waardoor ze een superieure keuze zijn dan geneste tafels. In tegenstelling tot geneste tabellen die een externe tabel nodig hebben voor opslag, worden VARRAY's in-line opgeslagen met hun bovenliggende record als onbewerkte waarde in de bovenliggende tabel. Dit betekent dat er geen STORE AS-clausule of aparte opslagtabel vereist is.

De in-line opslag van VARRAY's helpt bij het verminderen van schijfinvoer/uitvoer (I/O), waardoor VARRAY's efficiënter presteren dan geneste tabellen. Maar wanneer VARRAY's de 4K-gegevens overschrijden, volgt Oracle het out-of-line opslagmechanisme en slaat VARRAY's op als een LOB.

Syntaxis voor het maken van PL/SQL VARRAY's

In deze sectie zullen we de syntaxis zien voor het maken van VARRAY's als

  • Databaseobject en
  • Lid van PL/SQL Block.

Je kunt naar de video gaan over hetzelfde onderwerp op mijn YouTube-kanaal, waar ik beide syntaxis in detail heb uitgelegd.

VARRAY als database-object

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

VARRAY als lid van PL/SQL Block

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

Beide bovenstaande syntaxis zijn hetzelfde als die van de geneste tabel, behalve dat we hier een extra clausule hebben die Size_Limit is. Groottelimiet is een numeriek geheel getal dat het maximale aantal elementen aangeeft dat uw VARRAY kan bevatten.

Onthoud altijd dat we, vergelijkbaar met geneste tabellen, VARRAY alleen kunnen declareren in de declaratiesectie van het PL/SQL-blok.

Hoe wijzig ik de maximale grootte van de verzameling van het type VARRAY?

Groottelimiet van een VARRAY kan worden gewijzigd met behulp van de ALTER TYPE DDL-instructie.

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

Waar:

WIJZIG TYPE is een gereserveerde zin die aan de compiler aangeeft welke DDL-actie u wilt uitvoeren.

TYPE NAAM is de naam van het type dat u wilt wijzigen.

LIMIET WIJZIGEN is een clausule die de compiler informeert dat de gebruiker de maximale grootte wil wijzigen.

NIEUW-MAAT-LIMIT is een geheel getal dat de nieuwe limiet voor de grootte van uw VARRAY zal zijn.

ONGELDIG clausule is een optionele clausule die alle afhankelijke objecten ongeldig maakt zonder enig controlemechanisme.

CASCADE-clausule nogmaals is een optionele clausule die wijzigingen in afhankelijke typen en tabellen zal doorgeven.

 

Hoe laat je een verzameling van het type VARRAY vallen?

Om een ​​VARRAY-type te laten vallen, kun je hulp krijgen van het DROP DDL-statement.

DROP TYPE type_name [FORCE];

Waar:

Droptype

Is een DDL-instructie waarmee u elk type dat in uw database is gemaakt, kunt neerzetten.

Typ naam

Typenaam is de naam van een reeds gemaakt type dat u wilt verwijderen.

Dwingen

Geef FORCE op om het type te verwijderen, zelfs als het afhankelijke database-objecten heeft. Oracle Database markeert ONGEBRUIKT alle kolommen, afhankelijk van het type dat moet worden verwijderd, en die kolommen worden ontoegankelijk. Houd er rekening mee dat deze bewerking niet kan worden hersteld en ertoe kan leiden dat de gegevens in de afhankelijke tabellen of kolommen ontoegankelijk worden.

Hoop dat je iets nieuws hebt geleerd. Nu kunt u uw kennis over het onderwerp testen door hier een test te doen. Help ons alsjeblieft om te groeien door deze blog op je social media te delen. Op deze manier kun je ook je vrienden helpen bij het leren. Bedankt en een fijne dag verder!


  1. scheid door komma's gescheiden waarden en sla op in tabel in sql-server

  2. WordPress MySQL SQL-queryfout in WPDB-klasse

  3. Waarom kan ik geen alias gebruiken in een DELETE-instructie?

  4. Wat is het equivalent van de Oracle Dual-tabel in MS SqlServer?