Nested table
In PL SQL esiste una raccolta di dati efficiente e adattabile: la tabella annidata.
La tabella annidata è simile a una matrice unidimensionale ma con alcune differenze:
Un array ha sempre elementi consecutivi: la tabella annidata ha inizialmente elementi consecutivi ma può diventare sparsa quando gli elementi vengono eliminati.
Per creare una tabella nidificata devi usare questa sintassi:
type type_name is table of element_type[size element];
table_name type_name;
Di seguito un esempio di creazione e utilizzo di una tabella nidificata.
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 :
Questo codice crea una tabella nidificata di varchar2 utilizzando il tipo di istruzione….
Le istruzioni successive mostrano come inizializzarlo
infine ci sono tre istruzioni di assegnazione sulla tabella annidata.
È anche possibile estendere la tabella nidificata utilizzando l’istruzione di estensione. Segui 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;
or also :
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;
Questo codice è lo stesso del primo ma ha un’istruzione estesa in aggiunta. Questa istruzione aumenta il numero di elementi della nostra tabella annidata.
Oltre a estendere Pl Sql fornisce molti metodi per gestire una raccolta di dati (tabella annidata, varray, ecc.). Qui mostro l’elenco di questi metodi:
1 EXISTS(n)
Restituisce TRUE se esiste l’ennesimo elemento in una raccolta; altrimenti restituisce FALSE.
2 COUNT
Returns the number of elements that a collection currently contains.
3 LIMIT
4 FIRST
Restituisce i primi (più piccoli) numeri di indice in una raccolta che utilizza pedici interi.
5 LAST
Restituisce gli ultimi numeri di indice (più grandi) in una raccolta che utilizza pedici interi.
6 PRIOR(n)
Restituisce il numero di indice che precede l’indice n in una raccolta.
7 NEXT(n)
Restituisce il numero di indice che segue l’indice n.
8 EXTEND
Aggiunge un elemento null a una raccolta.
9 EXTEND(n)
Aggiunge n elementi nulli a una raccolta.
10 EXTEND(n,i)
Aggiunge n copie dell’i esimo elemento a una raccolta.
11 TRIM
Rimuove un elemento dalla fine di una raccolta.
12 TRIM(n)
13 DELETE
14 DELETE(n)
Rimuove l’ennesimo elemento da un array associativo con un tasto numerico o una tabella nidificata. Se l’array associativo ha una chiave stringa, l’elemento corrispondente al valore della chiave viene eliminato. Se n è nullo, DELETE (n) non fa nulla.
15 DELETE(m,n)
Rimuove tutti gli elementi nell’intervallo m..n da un array associativo o da una tabella nidificata. Se m è maggiore di n o se m o n è nullo, DELETE (m, n) non fa nulla.