Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Metoda gromadzenia:procedura EXTEND w bazie danych Oracle

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 –

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

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

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Utrzymywanie propagacji zawsze włączonej w strumieniach Oracle

  2. Określanie dat Wielkanocy na dowolny rok w Oracle PLSQL

  3. Jak uzyskać dni robocze lub godziny między dwiema datami?

  4. Utwórz użytkownika ze zmiennych łańcuchowych w bloku PL/SQL

  5. ORA-01264:Nie można utworzyć nazwy pliku dziennika