След PL/SQL Collection Method DELETE, процедурата EXTEND в базата данни на Oracle е втората в списъка. Използвахме тази процедура отново и отново, но така и не получихме възможността да я разгледаме подробно. Затова реших да посветя целия блог на този метод за събиране. Така че седнете и се насладете на блога.
Ако сте нов в PL/SQL и не знаете какво представляват процедурите, тогава имаме урок за вас. Щракнете тук и научете всичко за PL/SQL процедурите в Oracle Database.
Какво е PL/SQL Collection Method EXTEND?
Подобно на DELETE, методът за събиране EXTEND е претоварена PL/SQL процедура, която се използва за добавяне на елементи към колекцията.
По колко начина можем да извикаме процедура EXTEND в Oracle Database?
Процедурата за събиране на PL/SQL е претоварена процедура. Следователно това означава, че наричаме същата процедура по различни начини. Тези различни начини за извикване на процедура за събиране EXTEND са –
- Разширяване:Разширете извикването на процедура без никакъв аргумент.
Извикване на процедура за събиране на PL/SQL Extend без аргумент ще се добавя единичен NULL елемент към колекцията.
- Разширяване (n):Разширете извикването на процедура с един аргумент.
Процедура за събиране Extend с един аргумент ще добави броя NULL елементи, които споменахте като аргумент на процедурата . Но не забравяйте, че аргументът трябва да е валидна целочислена стойност.
- Разширяване (n, v):Разширете извикването на процедура с два аргумента.
В този случай първият аргумент показва броя на елементите които ще бъдат добавени към колекцията. Освен товат Вторият аргумент е индексният номер. Освен това стойността му ще бъде копирана и присвоена на всеки от новодобавените елементи на колекцията. Тази форма на EXTEND е необходима за колекции с „ненулеви елементи“.
Можем ли да използваме PL/SQL Collection Method EXTEND и с трите типа колекции?
Не, методът на колекция EXTEND може да се приложи само към колекция вложени таблици и VARRAY. Освен това EXTEND не може да се използва с колекция Асоциативни масиви.
Можете ли да ни покажете спецификацията на процедурата EXTEND на метода на събиране в Oracle Database?
Разбира се, защо не! Ето претоварените спецификации на PL/SQL Collection Method EXTEND —
EXTEND Процедура с един аргумент:
PROCEDURE EXTEND (n pls_integer := 1);
Метод за събиране EXTEND с два аргумента:
PROCEDURE EXTEND (n pls_integer, v pls_integer);
Кога трябва да използваме метода за събиране EXTEND в нашия код?
Когато имате колекция (вложена таблица или VARRAY) във вашия код, която не е инициализирана с достатъчен брой елементи. В този случай първо трябва да използвате PL/SQL Collection Method EXTEND.
Какво е изискването за PL/SQL колекция Method EXTEND?
Декларирането, дефинирането и инициализирането са трите стъпки, през които трябва да преминем, докато работим с колекция в Oracle Database. Но преди да съхраняваме данните в индекса, трябва да създадем слот за памет за тях. Следователно, процедурата за събиране на PL/SQL EXTEND ни помага да създадем този слот за памет за тези данни.
Ами ако сме изтрили или изрязали края на колекцията?
В този случай PL/SQL Collection методът EXTEND ще пропусне изтритите елементи, когато присвоява нов индекс.
Ами ако приложа метода за събиране EXTEND към неинициализирана вложена таблица или VARRAY?
Ако PL/SQL Collection Method EXTEND се приложи към неинициализирана колекция, тогава тя ще покаже COLLECTION_IS_NULL изключение.
А какво ще стане, ако се опитам да РАЗШИРЯ VARRAY над определената граница?
Ако методът за събиране EXTEND се използва с VARRAY, за да се разшири отвъд определеното му ограничение, тогава ще трябва да се сблъскате с друго изключение, което е SUBSCRIPT_BEYOND_LIMIT.
Хей, Маниш! Ще видим ли някога пример за този метод на събиране EXTEND?
Да, определено ще направим демонстрация на всяко от извикването на процедурата EXTEND на PL/SQL Collection, което споменахме по-горе. В допълнение към извикването на процедурата за разширяване с VARRAY.
1. Процедура за събиране на PL/SQL EXTEND без аргумент
SET SERVEROUTPUT ON; DECLARE TYPE my_nestedTable IS TABLE OF number; nt_obj my_nestedTable := my_nestedTable(); BEGIN nt_obj.EXTEND; nt_obj(1) := 10; DBMS_OUTPUT.PUT_LINE ('Data at index 1 is '||nt_obj(1)); END; /
2. Процедура за събиране EXTEND с един аргумент.
SET SERVEROUTPUT ON; DECLARE TYPE my_nestedTable IS TABLE OF number; nt_obj my_nestedTable := my_nestedTable(); BEGIN nt_obj.EXTEND(3); nt_obj(1) := 10; nt_obj(2) := 20; nt_obj(3) := 30; DBMS_OUTPUT.PUT_LINE ('Data at index 1 is '||nt_obj(1)); DBMS_OUTPUT.PUT_LINE ('Data at index 2 is '||nt_obj(2)); DBMS_OUTPUT.PUT_LINE ('Data at index 3 is '||nt_obj(3)); END; /
3. Процедура за събиране на PL/SQL EXTEND с два аргумента.
SET SERVEROUTPUT ON; DECLARE TYPE my_nestedTable IS TABLE OF number; nt_obj my_nestedTable := my_nestedTable(); BEGIN nt_obj.EXTEND; nt_obj(1) := 28; DBMS_OUTPUT.PUT_LINE ('Data at index 1 is '||nt_obj(1)); nt_obj.EXTEND(5,1); DBMS_OUTPUT.PUT_LINE ('Data at index 4 is '||nt_obj(4)); END; /
4. Процедура за събиране EXTEND (Без аргумент) с VARRAY
SET SERVEROUTPUT ON; DECLARE TYPE my_Varray IS VARRAY (5) OF NUMBER; vry_obj my_Varray := my_Varray(); BEGIN vry_obj.EXTEND; vry_obj(1) := 10; DBMS_OUTPUT.PUT_LINE('Data at index 1 is '||vry_obj(1)); END; /
Всеки LOC от всичко по-горе (освен 4-те) е обяснено подробно във видеоурока в нашия канал в YouTube.
Надяваме се, че сме обсъдили всички възможни въпроси относно PL/SQL Collection Method EXTEND, с които бихте могли да се сблъскате във вашия изпит за сертифициране на Oracle db, както и във вашето интервю. Освен това, ако имате някакви обърквания относно сертификатите, можете да се обърнете към нашето ръководство за сертифициране на Oracle Database.