Po PL/SQL Collection Method DELETE je procedura EXTEND v databázi Oracle druhou na seznamu. Použili jsme tento postup znovu a znovu, ale nikdy jsme neměli příležitost ho podrobně prozkoumat. Proto jsem se rozhodl věnovat celý blog této metodě sbírky. Takže se pohodlně usaďte a užijte si blog.
Pokud jste v PL/SQL noví a nevíte, co jsou procedury, pak pro vás máme tutoriál. Klikněte sem a zjistěte vše o procedurách PL/SQL v databázi Oracle.
Co je PL/SQL Collection Method EXTEND?
Podobně jako DELETE je metoda kolekce EXTEND přetížená procedura PL/SQL, která se používá pro přidávání prvků do kolekce.
Kolik způsobů můžeme volat proceduru EXTEND v databázi Oracle?
PL/SQL Collection Procedure je přetížená procedura. Znamená to tedy, že tento stejný postup nazýváme různými způsoby. Tyto různé způsoby volání procedury kolekce EXTEND jsou –
- Extend:Rozšíří volání procedury bez jakéhokoli argumentu.
Volání procedury PL/SQL Collection Extend bez jakéhokoli argumentu připojí jeden prvek NULL do sbírky.
- Extend (n):Rozšíří volání procedury o jeden argument.
Procedura kolekce Rozšířit o jeden argument připojí počet prvků NULL, které jste uvedli jako argument procedury . Pamatujte však, že argument musí být platná celočíselná hodnota.
- Extend (n, v):Rozšíří volání procedury o dva argumenty.
V tomto případě první argument udává počet prvků které budou připojeny ke sbírce. Navíc t Druhým argumentem je indexové číslo. Navíc bude jeho hodnota zkopírována a přiřazena ke každému z nově připojených prvků kolekce. Tato forma EXTEND je vyžadována pro kolekce s „not null elements“.
Můžeme použít metodu kolekce PL/SQL EXTEND se všemi třemi typy kolekcí?
Ne, metodu kolekce EXTEND lze použít pouze na vnořené tabulky a VARRAY kolekce. Kromě toho nelze EXTEND použít s asociativními poli kolekce.
Můžete nám ukázat specifikaci procedury Collection Method EXTEND v Oracle Database?
Jistě proč ne! Zde jsou přetížené specifikace PL/SQL Collection Method EXTEND —
EXTEND Postup s jedním argumentem:
PROCEDURE EXTEND (n pls_integer := 1);
Metoda sběru EXTEND se dvěma argumenty:
PROCEDURE EXTEND (n pls_integer, v pls_integer);
Kdy bychom měli v našem kódu použít metodu sběru EXTEND?
Když máte v kódu kolekci (buď vnořenou tabulku nebo VARRAY), která není inicializována dostatečným počtem prvků. V takovém případě musíte nejprve použít metodu shromažďování PL/SQL EXTEND.
Jaký je požadavek na metodu shromažďování PL/SQL EXTEND?
Deklarace, definice a inicializace jsou tři kroky, kterými musíme projít při práci s kolekcí v databázi Oracle. Před uložením dat do indexu však pro ně musíme vytvořit paměťový slot. V důsledku toho nám procedura PL/SQL Collection EXTEND pomáhá při vytváření tohoto paměťového slotu pro tato data.
Co když jsme smazali nebo ořízli konec sbírky?
V takovém případě metoda kolekce PL/SQL EXTEND přeskočí smazané prvky, když přiřadí nový index.
Co když použiji metodu shromažďování EXTEND na neinicializovanou vnořenou tabulku nebo VARRAY?
Pokud PL/SQL Collection Method EXTEND použijete na neinicializovanou kolekci, zobrazí se COLLECTION_IS_NULL výjimka.
A co když se pokusím ROZŠÍŘIT VARRAY nad jeho definovaný limit?
Pokud se s VARRAY použije metoda shromažďování EXTEND k jejímu rozšíření nad definovaný limit, budete muset čelit další výjimce, kterou je SUBSCRIPT_BEYOND_LIMIT.
Hej, Manishi! Uvidíme někdy příklad této metody sběru EXTEND?
Ano, určitě provedeme demonstraci každého volání procedury EXTEND PL/SQL Collection, které jsme zmínili výše. Kromě volání procedury Extend s VARRAY.
1. Procedura kolekce PL/SQL EXTEND bez argumentu.
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. Postup shromažďování EXTEND with One Argument.
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. Procedura kolekce PL/SQL EXTEND se dvěma argumenty.
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. Postup shromažďování EXTEND (bez argumentu) pomocí 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; /
Každý LOC ze všech výše uvedených (kromě 4) je podrobně vysvětlen ve výukovém videu na našem kanálu YouTube.
Doufám, že jsme probrali všechny možné otázky týkající se metody PL/SQL Collection EXTEND, se kterými se můžete setkat při certifikační zkoušce Oracle db i při pohovoru. Také, pokud máte nějaké nejasnosti ohledně certifikací, můžete se podívat do našeho Průvodce certifikačními zkouškami Oracle Database.