sql >> Databáze >  >> RDS >> Oracle

Metoda shromažďování:Procedura EXTEND v databázi Oracle

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 –

  1. 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.

  1. 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.

  1. 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.


  1. Jak generovat příkazy vložení z textových souborů pro tabulku SQL Server v SQL Server - SQL Server / Výukový program TSQL, část 106

  2. SQL Server ekvivalentní zobrazení CREATE OR REPLACE VIEW společnosti Oracle

  3. SQLite JSON_SET()

  4. Jak změnit názvy tabulek MySQL na serveru Linux tak, aby nerozlišovaly malá a velká písmena?