Colectii
Sunt
seturi de date care pot fi tratate ca parte a unei singure
înregistrari dintr-un tabel. Exista doua astfel de tipuri de
date:
- vectori cu marime variabila (varying arrays)
- tabele încapsulate (nested tables).
Un vector de marime variabila reprezinta
o multime ordonata de elemente de date. Toate elementele unui
vector vor fi de acelasi tip (unul din tipurile scalare sau un tip abstract).
Fiecare element are un index, care este numarul ce corespunde
pozitiei elementului în vector.
Se declara astfel:
CREATE OR REPLACE TYPE numetip AS VARRAY (n) OF tip_elemente;
Dimensiunea
vectorului (n) este data de numarul maxim al elementelor sale.
Declararea
unui vector nu presupune implicit si alocarea spatiului pe disc.
Se defineste un tip de date ce poate fi utilizat ca:
-tip
de data pentru o coloana a unui tabel relational,
-tipul
atributului unui obiect
-o
variabila PL/SQL, un parametru sau tipul rezultatului întors
de o functie.
O limita a acestui
tip de colectie este data de imposibilitatea adaugarii sau
actualizarii valorilor din vector, altfel decât prin înlocuirea
întregului vector cu altul nou.
Tabelele încapsulate
reprezinta un tip de colectie care poate stoca un numar nelmitat de elemente
si ofera posibilitatea actualizarii directe a unui anumit element.
Presupune existenta unui tabel sub forma unui atribut al unui
alt tabel. Se declara astfel:
CREATE OR REPLACE TYPE numetip AS TABLE OF tip_elemente
Pentru adaugarea unor înregistrari noi
în tabelul departamente se va folosi notatia:
NumeTipTabelIncapsulat (NumeTipElement (valAtrib1, valatrib2,…))