Po PL/SQL Collection Method DELETE, procedura EXTEND w bazie danych Oracle jest drugą na liście. Stosowaliśmy tę procedurę wielokrotnie, ale nigdy nie mieliśmy okazji zbadać jej szczegółowo. Dlatego postanowiłem poświęcić cały blog tej metodzie zbierania. Więc usiądź wygodnie i ciesz się blogiem.
Jeśli jesteś nowy w PL/SQL i nie wiesz, czym są procedury, mamy dla Ciebie samouczek. Kliknij tutaj i dowiedz się wszystkiego o procedurach PL/SQL w bazie danych Oracle.
Co to jest EXTEND metody gromadzenia danych PL/SQL?
Podobnie jak DELETE, Metoda kolekcji EXTEND jest przeciążoną procedurą PL/SQL, która służy do dołączania elementów do kolekcji.
Na ile sposobów możemy wywołać procedurę EXTEND w Oracle Database?
Procedura zbierania PL/SQL jest procedurą przeciążoną. Oznacza to zatem, że tę samą procedurę nazywamy na różne sposoby. Te różne sposoby wywoływania procedury windykacyjnej EXTEND to –
- Rozszerz:Rozszerz wywołanie procedury bez żadnych argumentów.
Wywołanie procedury PL/SQL Collection Extend bez żadnego argumentu dołączy pojedynczy element NULL do kolekcji.
- Rozszerz (n):Rozszerz wywołanie procedury o jeden argument.
Procedura gromadzenia Extend z jednym argumentem doda liczbę elementów NULL, które wymieniłeś jako argument procedury . Pamiętaj jednak, że argument musi być prawidłową wartością całkowitą.
- Rozszerz (n, v):Rozszerz wywołanie procedury o dwa argumenty.
W tym przypadku pierwszy argument wskazuje liczbę elementów które zostaną dołączone do kolekcji. Ponadto t Drugim argumentem jest numer indeksu. Ponadto jego wartość zostanie skopiowana i przypisana do każdego z nowo dołączonych elementów kolekcji. Ta forma EXTEND jest wymagana dla kolekcji z „elementami niepustymi”.
Czy możemy używać metody zbierania PL/SQL EXTEND ze wszystkimi trzema typami kolekcji?
Nie, metodę zbierania EXTEND można zastosować tylko do kolekcji zagnieżdżonych tabel i VARRAYs. Ponadto EXTEND nie może być używany z kolekcjami tablic asocjacyjnych.
Czy możesz nam pokazać specyfikację procedury Collection Method EXTEND w bazie danych Oracle?
Jasne, czemu nie! Oto przeciążone specyfikacje metody zbierania PL/SQL EXTEND —
EXTEND Procedura z jednym argumentem:
PROCEDURE EXTEND (n pls_integer := 1);
Metoda zbierania EXTEND z dwoma argumentami:
PROCEDURE EXTEND (n pls_integer, v pls_integer);
Kiedy powinniśmy używać metody zbierania EXTEND w naszym kodzie?
Gdy masz w swoim kodzie kolekcję (albo zagnieżdżoną tabelę lub VARRAY), która nie została zainicjowana z wystarczającą liczbą elementów. W takim przypadku musisz najpierw użyć metody zbierania PL/SQL EXTEND.
Jakie są wymagania metody EXTEND zbierania PL/SQL?
Deklarowanie, definiowanie i inicjowanie to trzy kroki, przez które musimy przejść podczas pracy z kolekcją w Oracle Database. Ale przed zapisaniem danych do indeksu musimy stworzyć dla nich miejsce w pamięci. W konsekwencji procedura EXTEND Collection PL/SQL pomaga nam w tworzeniu tego gniazda pamięci dla tych danych.
Co się stanie, jeśli usunęliśmy lub przycięliśmy koniec kolekcji?
W takim przypadku metoda PL/SQL Collection EXTEND pominie usunięte elementy podczas przypisywania nowego indeksu.
Co się stanie, jeśli zastosuję metodę zbierania EXTEND do niezainicjowanej tabeli zagnieżdżonej lub VARRAY?
Jeśli metoda zbierania PL/SQL EXTEND zostanie zastosowana do niezainicjowanej kolekcji, wyświetli COLLECTION_IS_NULL wyjątek.
A co, jeśli spróbuję ROZSZERZYĆ VARRAY poza jej określony limit?
Jeśli metoda zbierania EXTEND jest używana z VARRAY w celu rozszerzenia jej poza zdefiniowany limit, będziesz musiał zmierzyć się z innym wyjątkiem, którym jest SUBSCRIPT_BEYOND_LIMIT.
Hej, Manish! Czy kiedykolwiek zobaczymy przykład tej metody zbierania danych EXTEND?
Tak, na pewno przeprowadzimy demonstrację każdego z wywołań EXTEND procedury zbierania PL/SQL, o których wspomnieliśmy powyżej. Oprócz rozszerzenia wywołania procedury za pomocą VARRAY.
1. Procedura zbierania PL/SQL EXTEND bez argumentów.
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. Procedura windykacyjna EXTEND z jednym argumentem.
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 zbierania PL/SQL EXTEND z dwoma argumentami.
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. Procedura windykacyjna EXTEND (bez argumentów) z 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żdy LOC z wszystkich powyższych (z wyjątkiem 4) jest szczegółowo wyjaśniony w samouczku wideo na naszym kanale YouTube.
Mamy nadzieję, że omówiliśmy wszystkie możliwe pytania dotyczące metody zbierania danych PL/SQL EXTEND, z którymi możesz się zmierzyć podczas egzaminu certyfikacyjnego Oracle db oraz podczas rozmowy kwalifikacyjnej. Ponadto, jeśli masz jakiekolwiek wątpliwości dotyczące certyfikatów, możesz zapoznać się z naszym Przewodnikiem po egzaminach certyfikacyjnych Oracle Database.