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

Introduzione ai VARRAY PL/SQL nel database Oracle

I VARRAY sono stati lanciati in Oracle 8i nel 1998 come una versione modificata della raccolta di tipi di tabelle Nested di cui abbiamo discusso nei blog precedenti.

Lettura consigliata:come creare una tabella annidata –

  • Come elemento PL/SQL Block
  • Come oggetto di database
  • Utilizzo del tipo di dati definito dall'utente

Inoltre ora puoi testare le tue conoscenze sull'argomento facendo un test qui.

VARRAY è un argomento importante perché si vede che generalmente c'è sempre una domanda su di esso nell'esame di certificazione. Per ridurre al minimo qualsiasi confusione, daremo prima una breve occhiata all'introduzione della collezione VARRAYs.

VARRAYs, acronimo di Variable Sized Arrays sono stati introdotti in Oracle 8i nel 1998 come formato modificato di tabelle nidificate. Le modifiche principali possono essere viste nell'orientamento dello storage. Non ci sono modifiche evidenti nell'implementazione, ma il loro orientamento di archiviazione è completamente diverso rispetto alle tabelle nidificate.

A differenza della tabella nidificata che richiede una tabella esterna per l'archiviazione, I VARRAY vengono archiviati in linea con il record principale come valore grezzo nella tabella principale. Significa che non c'è più bisogno della clausola STORE AS. Oh, che sollievo, nessun IO non necessario e per di più prestazioni migliorate.

Possiamo salvare e riutilizzare i VARRAY?

Simile alle tabelle nidificate, i VARRAY sono di tipo persistente di raccolta, il che significa che possono essere creati come oggetti di database che possono essere salvati per un uso successivo. I VARRAY possono anche essere creati come membri di PL/SQL Blocks. L'ambito del VARRAY dichiarato all'interno di un blocco PL/SQL è limitato al blocco in cui è stato creato.

I VARRAY sono limitati o illimitati?

A differenza della tabella Nested, i VARRAY sono una forma di raccolta limitata. Per delimitato intendo che devi decidere quanti elementi vuoi memorizzare nella tua collezione mentre lo dichiari. Considerando che nella tabella nidificata che è un tipo illimitato di raccolta non c'è un limite superiore al numero di elementi.

Meccanismo di archiviazione VARRAYs

Il meccanismo di archiviazione dei VARRAY è la più grande differenza che li rende una scelta superiore rispetto ai tavoli Nested. A differenza delle tabelle nidificate che richiedono una tabella esterna per l'archiviazione, i VARRAY vengono archiviati in linea con il record principale come valore grezzo nella tabella principale. Ciò significa che non è richiesta la clausola STORE AS o una tabella di archiviazione separata.

L'archiviazione in linea dei VARRAY aiuta a ridurre gli ingressi/uscite (I/O) del disco, il che rende i VARRAY più efficienti in termini di prestazioni rispetto alle tabelle nidificate. Ma quando i VARRAY superano i 4K di dati, Oracle segue il meccanismo di archiviazione fuori linea e archivia i VARRAY come LOB.

Sintassi per la creazione di VARRAY PL/SQL

In questa sezione vedremo la sintassi per la creazione di VARRAY come

  • Oggetto database e
  • Membro del blocco PL/SQL.

Puoi andare al video sullo stesso argomento sul mio canale YouTube dove ho spiegato in dettaglio entrambe queste sintassi.

VARRAY come oggetto database

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

VARRAY come membro di PL/SQL Block

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

Entrambe le sintassi precedenti sono le stesse della tabella nidificata tranne che qui abbiamo una clausola aggiuntiva che è Size_Limit. Il limite di dimensione è un numero intero numerico che indicherà il numero massimo di elementi che il tuo VARRAY può contenere.

Ricorda sempre che in modo simile alla tabella nidificata possiamo dichiarare VARRAY solo nella sezione di dichiarazione del blocco PL/SQL.

Come modificare il limite di dimensione della raccolta di tipi VARRAY?

Il limite di dimensione di un VARRAY può essere modificato utilizzando l'istruzione ALTER TYPE DDL.

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

Dove:

ALTER TYPE è una frase riservata che indica al compilatore quale azione DDL si desidera eseguire.

TIPO NOME è il nome del tipo che vuoi modificare.

MODIFICA LIMITE è una clausola che informa il compilatore che l'utente desidera modificare il limite di dimensione.

NUOVO LIMITE DI TAGLIE è un numero intero che sarà il nuovo limite di dimensione del tuo VARRAY.

INVALIDA clausola è una clausola facoltativa che invaliderà tutti gli oggetti dipendenti senza alcun meccanismo di controllo.

Clausola CASCADE di nuovo è una clausola facoltativa che propagherà le modifiche ai tipi e alle tabelle dipendenti.

 

Come eliminare una raccolta di tipo VARRAY?

Per eliminare un tipo VARRAY puoi chiedere aiuto all'istruzione DROP DDL.

DROP TYPE type_name [FORCE];

Dove:

Tipo di rilascio

È un'istruzione DDL che consente di eliminare qualsiasi tipo creato nel database.

Digita il nome

Il nome del tipo è il nome di un tipo già creato che desideri eliminare.

Forza

Specifica FORCE per eliminare il tipo anche se ha oggetti di database dipendenti. Oracle Database contrassegna UNUSED tutte le colonne in base al tipo da eliminare e tali colonne diventano inaccessibili. Ricorda che questa operazione non è recuperabile e potrebbe rendere inaccessibili i dati nelle tabelle o colonne dipendenti.

Spero che tu abbia imparato qualcosa di nuovo. Ora puoi testare le tue conoscenze sull'argomento facendo un test qui. Aiutaci a crescere condividendo questo blog sui tuoi social. In questo modo puoi anche aiutare i tuoi amici nell'apprendimento. Grazie e buona giornata!