Colecțiile sunt prezente într-o formă sau alta în majoritatea limbajelor de programare și peste tot există o esență similară în ceea ce privește utilizarea. Anume - puteți să stocați un set de obiecte de același tip și să efectuați orice acțiuni pe tot setul sau într-un ciclu pentru a efectua același tip de acțiuni cu toate elementele setului.
În același mod, colecțiile sunt de asemenea utilizate în Oracle.
Informații generale despre colecțiile din pl / sql
- Colectarea colecției are loc în două etape
- Mai întâi declarăm tipul colecției (construcțiile assoc_array_type_def, varray_type_def și nested_table_type_def vor fi date mai jos)
Tipuri de colecții
PL / SQL bloc
pachet
Schema nivel
Doar cele definite la nivel de schemă
Gamă asociativă
De asemenea, se numește index prin tabel sau pl / sql table.
Tipul este descris după cum urmează (assoc_array_type_def):.
- Pentru plasarea în memorie a tabelelor mici - directoare
- Trimitere ca parametru de colectare
restricţii:
Dacă modificați setările și NLS_SORT NLS_COMP în timpul sesiunii, după finalizarea unui tablou asociativ, putem obține rezultate surprinzătoare numim prima metodă, ultima, viitoare, anterioară. De asemenea, s-ar putea să aveți probleme cu transferarea unei matrice asociative ca parametru într-o altă bază de date cu diferite setări NLS_SORT și NLS_COMP
Este o serie de elemente stocate consecutiv
Tipul este descris după cum urmează (varay_type_def):
- Dimensiunea este setată la creație
- Indexate cu 1
- Inițializată de către constructor
- Dacă parametrii nu sunt transmiși constructorului, este returnată o colecție goală
- Tipul de date este orice tip de date, altul decât cursorul ref
- Știm numărul maxim de elemente
- Accesul la elemente secvențial
restricţii:
Dimensiunea maximă este de 2,147,483,647 articole
Tavă înmuiată
Tipul este descris după cum urmează (nested_table_type_def):
- Dimensiunea colecției se modifică dinamic
- Poate fi într-o stare descărcată, așa cum se arată în imagine
< - Inițializată de către constructor
- Dacă parametrii nu sunt transmiși constructorului, este returnată o colecție goală
- Tipul de date este orice tip de date, altul decât cursorul ref
- Dacă conține o singură valoare scalară, atunci numele coloanei este Column_Value
- Dacă parametrii nu sunt transmiși constructorului, este returnată o colecție goală
Setați operațiile cu tabele imbricate
Operațiile sunt posibile numai cu colecții de mese imbricate. Ambele colecții implicate în operațiune trebuie să fie de același tip.
Rezultatul operației este, de asemenea, colecția de tabele imbricate.
- Ștergerea șterge toate elementele. Șterge imediat memoria alocată pentru a stoca aceste articole.
- Șterge (n) șterge elementul cu indexul n. Memoria nu se eliberează. Un element poate fi restabilit (adică unul nou) și va avea aceeași memorie ca și cea anterioară.
- Șterge (n, m) șterge elementele cu indici în intervalul n..m
- Dacă elementul care trebuie șters nu este în colecție, nu face nimic.
- Trim () - elimină un element la sfârșitul colecției. Dacă nu există niciun element, aruncă o excepție de SUBSCRIPT_BEYOND_COUNT
- Trim (n) - elimină n elemente de la sfârșitul colecției. Dacă elementele sunt mai mici decât n, o excepție este aruncată SUBSCRIPT_BEYOND_COUNT
- Funcționează cu dimensiunea internă a colecției. Ie Dacă ultimul element a fost șters folosind funcția Ștergere, apelul Trim () va șterge elementul șters anterior.
- Șterge imediat memoria alocată pentru a stoca aceste articole
- Este mai bine să nu o utilizați în combinație cu Ștergeți ()
- EXTEND adaugă un element cu o valoare nulă la sfârșitul colecției
- EXTEND (n) adaugă n elemente cu o valoare nulă la sfârșitul colecției
- EXTEND (n, i) adaugă n copii ale elementului cu index i la sfârșitul colecției. Dacă colecția are constrângere NOT NULL, se poate utiliza numai acest formular.
- Dacă elementele au fost șterse anterior utilizând metoda Ștergere, extensia nu va utiliza celulele de memorie stocate în colecție, ci va adăuga un element nou (alocați o nouă memorie)