VARRAY бяха пуснати в Oracle 8i през 1998 г. като модифицирана версия на колекция от типове вложени таблици, която обсъждахме в предишните блогове.
Препоръчително четене:Как да създадете вложена таблица –
- Като PL/SQL блоков елемент
- Като обект на база данни
- Използване на потребителски дефиниран тип данни
Също така сега можете да тествате знанията си по темата, като направите тест тук.
VARRAY е важна тема, защото се вижда, че като цяло винаги има въпрос по нея в сертификационния изпит. За да сведем до минимум объркването, първо ще разгледаме накратко въведението на колекцията VARRAY.
VARRAY, което е акроним на Масиви с променливи размери бяха въведени в Oracle 8i през 1998 г. като модифициран формат на вложени таблици. Основните модификации могат да се видят в ориентацията на съхранение. Няма забележими промени в реализацията, но тяхната ориентация на съхранение е напълно различна в сравнение с вложените таблици.
За разлика от вложената таблица, която изисква външна таблица за съхранението си, VARRAY се съхраняват в ред с техния родителски запис като необработена стойност в родителската таблица. Това означава, че няма повече нужда от клауза STORE AS. О, какво облекчение, без ненужни IO и на всичкото отгоре повишена производителност.
Можем ли да запазваме и използваме повторно VARRAY?
Подобно на вложените таблици VARRAY са постоянен тип колекция, което означава, че могат да бъдат създадени като обект на база данни, който може да бъде запазен за по-късна употреба. VARRAY могат също да бъдат създадени като членове на PL/SQL блокове. Обхватът на VARRAY, който е деклариран в PL/SQL блок, е ограничен до блока, в който е създаден.
Ограничени ли са VARRAY или неограничени?
За разлика от вложената таблица VARRAY са ограничена форма на колекция. Под ограничено имам предвид, че трябва да решите колко елемента искате да съхранявате във вашата колекция, докато я декларирате. Докато във вложената таблица, която е неограничен тип колекция, няма горно ограничение за броя на елементите.
Механизъм за съхранение на VARRAY
Механизмът за съхранение на VARRAY е най-голямата разлика, която ги прави по-добър избор от вложените таблици. За разлика от вложените таблици, които изискват външна таблица за съхранение, VARRAY се съхраняват в съответствие с техния родителски запис като необработена стойност в родителската таблица. Това означава, че няма изискване за клауза STORE AS или отделна таблица за съхранение.
Вграденото съхранение на VARRAY помага за намаляване на дисковите входове/изходи (I/O), което прави VARRAY по-ефективни от вложената таблица. Но когато VARRAY надвишават 4K данни, Oracle следва механизма за съхранение извън линия и съхранява VARRAY като LOB.
Синтаксис за създаване на PL/SQL VARRAY
В този раздел ще видим синтаксиса за създаване на VARRAY като
- Обект на база данни и
- Член на PL/SQL блока.
Можете да преминете към видеоклипа по същата тема в моя канал в YouTube, където обясних подробно и двата синтаксиса.
VARRAY като обект на база данни
CREATE [OR REPLACE] TYPE type_name IS {VARRAY | VARYING ARRAY} (size_limit) OF element_type;
VARRAY като член на PL/SQL Block
DECLARE TYPE type_name IS {VARRAY | VARYING ARRAY} (size_limit) OF element_type;
И двата горни синтаксиса са същите като на вложена таблица, освен че тук имаме допълнителна клауза, която е Size_Limit. Ограничението за размера е числово цяло число, което показва максималния брой елементи, които вашият VARRAY може да съдържа.
Винаги помнете, подобно на вложената таблица, ние можем да декларираме VARRAY само в секцията за декларации на блока PL/SQL.
Как да променя ограничението за размера на колекцията от типове VARRAY?
Ограничението за размер на VARRAY може да бъде променено с помощта на оператор ALTER TYPE DDL.
ALTER TYPE type_name MODIFY LIMIT new-size-limit [INVALIDATE | CASCADE]
Къде:
ПРОМЕНИ ТИПА е запазена фраза, която указва на компилатора кое DDL действие искате да извършите.
ТИП ИМЕ е името на типа, който искате да промените.
МОДИФИЦИРАНЕ НА ОГРАНИЧЕНИЕТО е клауза, която информира компилатора, че потребителят иска да промени ограничението за размера.
НОВ-ОГРАНИЧЕН РАЗМЕР е цяло число, което ще бъде новото ограничение за размера на вашия VARRAY.
НЕВАЛИДНА клауза е незадължителна клауза, която ще анулира всички зависими обекти без никакъв механизъм за проверка.
клауза CASCADE отново е незадължителна клауза, която ще разпространява промените в зависими типове и таблица.
Как да махна колекция от тип VARRAY?
За да премахнете тип VARRAY, можете да вземете помощ от DROP DDL оператор.
DROP TYPE type_name [FORCE];
Къде:
Тип падане
Това е DDL израз, с помощта на който можете да пуснете всеки тип, създаден във вашата база данни.
Въведете име
Името на типа е името на вече създаден тип, който искате да премахнете.
Принудително
Посочете FORCE , за да премахнете типа, дори ако има зависими обекти на база данни. Oracle Database маркира НЕИЗПОЛЗВАНИ всички колони в зависимост от типа, който трябва да бъде премахнат, и тези колони стават недостъпни. Не забравяйте, че тази операция не е възстановима и може да доведе до недостъпност на данните в зависимите таблици или колони.
Надявам се, че сте научили нещо ново. Сега можете да проверите знанията си по темата, като направите тест тук. Моля, помогнете ни да се развиваме, като споделите този блог в социалните си мрежи. По този начин можете да помогнете и на приятелите си в ученето. Благодаря и приятен ден!