VARRAY zostały wprowadzone w Oracle 8i w 1998 roku jako zmodyfikowana wersja kolekcji zagnieżdżonych typów tabel, którą omawialiśmy w poprzednich blogach.
Sugerowana lektura:Jak utworzyć tabelę zagnieżdżoną –
- Jako element bloku PL/SQL
- Jako obiekt bazy danych
- Korzystanie z typu danych zdefiniowanego przez użytkownika
Teraz możesz sprawdzić swoją wiedzę na ten temat, rozwiązując test tutaj.
VARRAY to ważny temat, ponieważ widać, że generalnie na egzaminie certyfikacyjnym zawsze pojawia się pytanie. Aby zminimalizować wszelkie nieporozumienia, najpierw przyjrzymy się krótkiemu wprowadzeniu do kolekcji VARRAYs.
VARRAYs, który jest akronimem tablic o zmiennej wielkości zostały wprowadzone w Oracle 8i w 1998 roku jako zmodyfikowany format tabel zagnieżdżonych. Główne modyfikacje można zaobserwować w orientacji na przechowywanie. Nie ma zauważalnych zmian w implementacji, ale ich orientacja przechowywania jest zupełnie inna niż w przypadku tabel zagnieżdżonych.
W przeciwieństwie do tabeli zagnieżdżonej, która wymaga zewnętrznej tabeli do przechowywania, VARRAY są przechowywane w linii z ich rekordem nadrzędnym jako wartość surowa w tabeli nadrzędnej. Oznacza to brak konieczności stosowania klauzuli STORE AS. Och, co za ulga, żadnych zbędnych IO, a do tego zwiększona wydajność.
Czy możemy zapisywać i ponownie wykorzystywać VARRAY?
Podobnie jak w przypadku tabel zagnieżdżonych, VARRAY są trwałym typem kolekcji, co oznacza, że można je tworzyć jako obiekty bazy danych, które można zapisać do późniejszego wykorzystania. VARRAY można również tworzyć jako elementy bloków PL/SQL. Zakres zmiennej VARRAY zadeklarowanej wewnątrz bloku PL/SQL jest ograniczony do bloku, w którym jest tworzony.
Czy wartości VARRAY są ograniczone czy nieograniczone?
W przeciwieństwie do tabeli zagnieżdżonej ZMIENNE są zbiorem ograniczonym. Przez ograniczenie mam na myśli, że musisz zdecydować, ile elementów chcesz przechowywać w swojej kolekcji, deklarując ją. Natomiast w tabeli zagnieżdżonej, która jest nieograniczonym typem kolekcji, nie ma górnego limitu liczby elementów.
Mechanizm przechowywania VARRAYs
Największą różnicą jest mechanizm przechowywania tabel VARRAY, co czyni je lepszym wyborem niż tabele zagnieżdżone. W przeciwieństwie do tabel zagnieżdżonych, które wymagają zewnętrznej tabeli do przechowywania, VARRAY są przechowywane w linii z ich rekordem nadrzędnym jako wartość surowa w tabeli nadrzędnej. Oznacza to, że nie ma wymogu klauzuli STORE AS ani oddzielnej tabeli pamięci.
Wbudowana pamięć VARRAY pomaga w zmniejszeniu liczby wejść/wyjść dyskowych (I/O), co sprawia, że VARRAY są bardziej wydajne niż tabele zagnieżdżone. Ale gdy VARRAY przekracza 4K danych, Oracle podąża za mechanizmem pamięci masowej poza linią i przechowuje VARRAY jako LOB.
Składnia tworzenia VARRAY PL/SQL
W tej sekcji zobaczymy składnię tworzenia VARRAY jako
- Obiekt bazy danych i
- Członek bloku PL/SQL.
Możesz przejść do filmu wideo na ten sam temat na moim kanale YouTube, gdzie szczegółowo wyjaśniłem obie te składnie.
VARRAY jako obiekt bazy danych
CREATE [OR REPLACE] TYPE type_name IS {VARRAY | VARYING ARRAY} (size_limit) OF element_type;
VARRAY jako członek bloku PL/SQL
DECLARE TYPE type_name IS {VARRAY | VARYING ARRAY} (size_limit) OF element_type;
Obie powyższe składnie są takie same jak w przypadku tabeli zagnieżdżonej, z wyjątkiem tego, że mamy tutaj dodatkową klauzulę, którą jest Size_Limit. Limit rozmiaru to liczbowa liczba całkowita, która wskazuje maksymalną liczbę elementów, które może pomieścić Twoja VARRAY.
Zawsze pamiętaj, podobnie jak w przypadku tabeli zagnieżdżonej, możemy zadeklarować VARRAY tylko w sekcji deklaracji bloku PL/SQL.
Jak zmienić limit rozmiaru kolekcji typów VARRAYs?
Limit rozmiaru VARRAY można zmienić za pomocą instrukcji ALTER TYPE DDL.
ALTER TYPE type_name MODIFY LIMIT new-size-limit [INVALIDATE | CASCADE]
Gdzie:
ZMIENNY TYP jest zastrzeżoną frazą, która wskazuje kompilatorowi, jaką akcję DDL chcesz wykonać.
NAZWA TYPU to nazwa typu, który chcesz zmienić.
ZMIENIAJ LIMIT to klauzula, która informuje kompilator, że użytkownik chce zmienić limit rozmiaru.
NOWE LIMITY ROZMIARÓW to liczba całkowita, która będzie nowym limitem rozmiaru VARRAY.
UNIEŚLIWIĆ klauzula to opcjonalna klauzula, która unieważni wszystkie zależne obiekty bez żadnego mechanizmu sprawdzania.
Klauzula CASCADE ponownie jest opcjonalną klauzulą, która będzie propagować zmiany w zależnych typach i tabelach.
Jak usunąć kolekcję typu VARRAY?
Aby usunąć typ VARRAY, możesz skorzystać z pomocy instrukcji DROP DDL.
DROP TYPE type_name [FORCE];
Gdzie:
Typ upuszczania
Jest to instrukcja DDL, za pomocą której możesz usunąć dowolny typ utworzony w Twojej bazie danych.
Wpisz nazwę
Nazwa typu to nazwa już utworzonego typu, który chcesz usunąć.
Siła
Określ FORCE, aby usunąć typ, nawet jeśli zawiera zależne obiekty bazy danych. Oracle Database oznacza NIEUŻYWANE wszystkie kolumny w zależności od typu, który ma zostać usunięty, a te kolumny stają się niedostępne. Pamiętaj, że tej operacji nie można odzyskać i może ona spowodować, że dane w zależnych tabelach lub kolumnach staną się niedostępne.
Mam nadzieję, że nauczyłeś się czegoś nowego. Teraz możesz sprawdzić swoją wiedzę na ten temat, rozwiązując test tutaj. Pomóż nam się rozwijać, udostępniając ten blog w swojej sieci społecznościowej. W ten sposób możesz również pomóc swoim przyjaciołom w nauce. Dzięki i życzę miłego dnia!