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 il numero di dichiarazioni di elementi, la tabella nidificata no. La dimensione della tabella nidificata può aumentare utilizzando il metodo di estensione.

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;

Spiegazione :

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

Restituisce il numero di elementi attualmente contenuti in una raccolta.

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)

Rimuove n elementi dalla fine di una raccolta.

13 DELETE

Rimuove tutti gli elementi da una raccolta, impostando COUNT su 0.

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.

Potrebbero interessarti anche...

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *