VARRAY byly spuštěny v Oracle 8i již v roce 1998 jako upravená verze kolekce typu Nested, o které jsme hovořili v předchozích blozích.
Doporučená četba:Jak vytvořit vnořenou tabulku –
- Jako prvek PL/SQL Block
- Jako objekt databáze
- Použití datového typu definovaného uživatelem
Nyní si také můžete otestovat své znalosti na toto téma pomocí testu zde.
VARRAY je důležité téma, protože je vidět, že obecně na něj v certifikační zkoušce vždy existuje otázka. Abychom minimalizovali jakýkoli zmatek, nejprve se krátce podíváme na úvod kolekce VARRAYs.
VARRAYs, což je zkratka z Pole s variabilní velikostí byly představeny v Oracle 8i již v roce 1998 jako upravený formát vnořených tabulek. Hlavní změny lze vidět v orientaci úložiště. V implementaci nejsou žádné znatelné změny, ale jejich orientace úložiště je zcela odlišná ve srovnání s vnořenými tabulkami.
Na rozdíl od vnořené tabulky, která pro své úložiště vyžaduje externí tabulku, VARRAY jsou uloženy in-line se svým nadřazeným záznamem jako nezpracovaná hodnota v nadřazené tabulce. To znamená, že již není potřeba klauzule STORE AS. Jaká to úleva, žádné zbytečné IO a navíc zvýšený výkon.
Můžeme uložit a znovu použít VARRAY?
Podobně jako vnořené tabulky jsou VARRAY Persistent typem kolekce, což znamená, že je lze vytvořit jako databázový objekt, který lze uložit pro pozdější použití. VARRAY lze také vytvořit jako člen PL/SQL Blocks. Rozsah VARRAY, který je deklarován uvnitř bloku PL/SQL, je omezen na blok, ve kterém je vytvořen.
Jsou VARRAY ohraničené nebo neohraničené?
Na rozdíl od vnořené tabulky jsou VARRAY ohraničenou formou kolekce. Ohraničením myslím, že se musíte rozhodnout, kolik prvků chcete uložit ve své sbírce při jejím deklarování. Zatímco ve vnořené tabulce, která je neomezeným typem kolekce, není horní hranice počtu prvků.
Úložný mechanismus VARRAY
Úložný mechanismus VARRAY je největší rozdíl, díky kterému jsou lepší volbou než Nested stoly. Na rozdíl od vnořených tabulek, které pro své úložiště vyžadují externí tabulku, jsou VARRAY uloženy in-line se svým nadřazeným záznamem jako nezpracovaná hodnota v nadřazené tabulce. To znamená, že není vyžadována klauzule STORE AS nebo samostatná tabulka úložiště.
In-line úložiště VARRAY pomáhá při snižování diskových vstupů/výstupů (I/O), díky čemuž jsou VARRAY výkonnější než vnořené tabulky. Ale když VARRAY překročí 4K dat, Oracle následuje mechanismus ukládání mimo linku a uloží VARRAY jako LOB.
Syntaxe pro vytváření PL/SQL VARRAY
V této části uvidíme syntaxi pro vytváření VARRAY jako
- Objekt databáze a
- Člen PL/SQL Block.
Můžete přejít na Video na stejné téma na mém kanálu YouTube, kde jsem obě tyto syntaxe podrobně vysvětlil.
VARRAY jako objekt databáze
CREATE [OR REPLACE] TYPE type_name IS {VARRAY | VARYING ARRAY} (size_limit) OF element_type;
VARRAY jako člen PL/SQL Block
DECLARE TYPE type_name IS {VARRAY | VARYING ARRAY} (size_limit) OF element_type;
Obě výše uvedené syntaxe jsou stejné jako u vnořené tabulky kromě toho, že zde máme další klauzuli, kterou je Size_Limit. Limit velikosti je celé číselné číslo, které udává maximální počet prvků, které váš VARRAY pojme.
Vždy si pamatujte, že podobně jako u vnořené tabulky můžeme deklarovat VARRAY pouze v deklarační sekci PL/SQL bloku.
Jak upravit limit velikosti kolekce typů VARRAYs?
Limit velikosti VARRAY lze změnit pomocí příkazu ALTER TYPE DDL.
ALTER TYPE type_name MODIFY LIMIT new-size-limit [INVALIDATE | CASCADE]
Kde:
ZMĚNIT TYP je vyhrazená fráze, která kompilátoru ukazuje, jakou akci DDL chcete provést.
TYPE NAME je název typu, který chcete změnit.
ZMĚNIT LIMIT je klauzule, která informuje kompilátor, že uživatel chce upravit limit velikosti.
NOVÁ-LIMIT VELIKOSTI je celé číslo, které bude novým limitem velikosti vašeho VARRAY.
ZRUŠIT klauzule je volitelná klauzule, která zruší platnost všech závislých objektů bez jakéhokoli kontrolního mechanismu.
Kauzule CASCADE je opět volitelná klauzule, která rozšíří změny do závislých typů a tabulek.
Jak zrušit sbírku typu VARRAY?
Chcete-li zrušit typ VARRAY, můžete použít příkaz DROP DDL.
DROP TYPE type_name [FORCE];
Kde:
Typ přetažení
Je příkaz DDL, pomocí kterého můžete vypustit jakýkoli typ vytvořený ve vaší databázi.
Zadejte název
Název typu je název již vytvořeného typu, který chcete odstranit.
Vynutit
Zadejte FORCE, chcete-li typ zrušit, i když má závislé databázové objekty. Oracle Database označí NEPOUŽITÉ všechny sloupce v závislosti na typu, které mají být odstraněny, a tyto sloupce se stanou nepřístupnými. Pamatujte, že tuto operaci nelze obnovit a mohla by způsobit, že data v závislých tabulkách nebo sloupcích se stanou nedostupnými.
Doufám, že jste se naučili něco nového. Nyní si můžete otestovat své znalosti na toto téma pomocí testu zde. Pomozte nám v růstu sdílením tohoto blogu na své sociální síti. Můžete tak pomoci i svým přátelům v učení. Děkuji a přeji hezký den!