Nested Table

In PL SQL esiste ed adattabile collection di dati : le Nested table.
Nested table è simile ad un array monodimensionali ma con alcune differenze:
– Un array deve dichiarare il numero degli elementi – la nested table no. La grandezza di una nested
table può essere incrementata usando il metodo extend (vedi in basso).
– Un array deve avere gli elementi sempre consecutivi – una Nested table ha gli elementi
consecutivi all’inizio ma poi diventano sparsi quando alcuni di questi elementi vengono cancellati.
Di seguito un esempio della sintassi da usare per la creazione di una nested table :
type type_name is table of element_type[size element];
table_name type_name;
Qui sotto un esempio relativo alla creazione e all’uso di una nested table.
declare
type disney_table is table of varchar2(30);
disney:= disney_table (null,null,null);
begin
disney(1):=’goofy’;
disney(2):=’donald duck’;
disney(3):= ‘mickey mouse;
end;
Spiegazione:
Il codice sopra riportato crea una nested table di varchar2 usando l’istruzione type….
L’istruzione successiva mostra come la nested table venga inizializzata
Come sopra indicato è anche possibile incrementare la nested table usando l’istruzione extend.
Di seguito un esempio :
declare
type disney_table is table of varchar2(30);
begin
extend disney;
disney(1):=’goofy’;
extend disney;
disney(2):=’donald duck’;
extend disney;
disney(3):= ‘mickey mouse’;
end;
oppure :
declare
type disney_table is table of varchar2(30);
disney:= disney_table (null,null,null);
begin
disney(1):=’goofy’;
disney(2):=’donald duck’;
disney(3):= ‘mickey mouse’;
extend disney;
disney(4):=’pluto’;
end;
Spiegazione :
Questo codice, è il medesimo del primo ma con in più l’istruzione extend. Questa istruzione
permette di aumentare il numero di elementi della nostra nested table.
Oltre a extend PL SQL fornisce un sacco di metodi per la gestione di collection di dati (Nested
Table, varra, etc). Qui sotto ho riportato una lista di questi metodi:
1 EXISTS(n)
Ritorna TRUE se l’nth elemento nella collection esiste; altrimenti torna FALSE.
2 COUNT
Ritorna il numero di elementi che contiene la collection
3 LIMIT
Controlla il numero massimo della grandezza di una Collection.
4 FIRST
Ritorna il primo (più piccolo) indice di una collection che usa integer come elementi
5 LAST
Ritorna l’ultimo (più grande) indice di una collection che usa integer come elementi
6 PRIOR(n)
Ritorna l’indice che precede l’indice n in una collection
7 NEXT(n)
Restituisce l’indice che è dopo l’indice n
8 EXTEND
Aggiunge un elemento alla Collection
9 EXTEND(n)
Aggiunge n elementi alla Collection
10 EXTEND(n,i)
Aggiunge n elementi all’ith elemento di una collection.
11 TRIM
Rimuove un elemento dalla fine della collection.
12 TRIM(n)
Rimuove n elementi dalla fine della collection..
13 DELETE
Cancella tutti gli elementi di una collection, assegna COUNT a 0.
14 DELETE(n)
Cancella l’nth elemento da un’array associativo o da una nested table. Se l’array è
composto da stringhe, verrà cancellato l’elemento corrispondente al valore della striga . Se
n è null, DELETE(n) non fa nulla
15 DELETE(m,n)
Cancella tutti gli elementi in un range m..n da un array associativo o da una nested table.
Se m è maggiore di n o n è null, DELETE(m,n) non fa nulla.

Potrebbero interessarti anche...