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

Metoda gromadzenia:procedura DELETE w bazie danych Oracle

Procedura USUŃ w bazie danych Oracle

Jak omówiono we wstępie do metod zbierania, mamy siedem funkcji zbierania i 3 procedury zbierania. Dlatego w sumie mamy 10 metod zbierania, wśród których omówiliśmy już 7 funkcji zbierania. Dlatego dzisiaj w tym samouczku omówimy pierwszą procedurę zbierania danych PL/SQL, którą jest procedura DELETE w bazie danych Oracle.

Co to jest metoda zbierania PL/SQL Usuń?

Metoda kolekcji DELETE to przeładowana procedura, która usuwa elementy z kolekcji.

Co rozumiesz przez przeciążoną procedurę?

Dobrze słyszałeś. Metoda zbierania danych PL/SQL DELETE jest przeciążoną procedurą. Co oznacza, że ​​możesz użyć tej samej procedury na trzy różne sposoby . Te trzy różne sposoby to –

  • USUŃ :Proste wywołanie procedury bez żadnych parametrów. Tak więc, jeśli procedura PL/SQL Collection DELETE zostanie użyta bez żadnego parametru, to usunie wszystkie elementy z kolekcji .
  • DELETE (numer indeksu ) :Wywołanie procedury z jednym parametrem. Ten pojedynczy parametr jest prawidłowym numerem indeksu kolekcji. Procedura zbierania DELETE wywołana przez przekazanie prawidłowego numeru indeksu usunie element określonego indeksu .
  • DELETE (indeks początkowy, indeks końcowy ) : Wywołanie procedury z dwoma parametrami. Ten sposób wywoływania procedury DELETE jest określany jako Usuwanie zakresu . W ten sposób musisz określić dwa indeksy. A procedura usuwa zakres elementów, które mieszczą się między indeksem początkowym a indeksem końcowym .

Jeśli kolekcja jest tablicą asocjacyjną indeksowaną ciągiem, indeks początkowy i indeks końcowy są ciągami; w przeciwnym razie indeksy początkowe i końcowe są liczbami całkowitymi.

Czy możemy użyć procedury DELETE w bazie danych Oracle ze wszystkimi kolekcjami?

Tak, metodę zbierania DELETE można zastosować do wszystkich trzech typów kolekcji. Są to – Tabele zagnieżdżone, VARRAYs i Tablice asocjacyjne.

Czekaj! Ale jeśli użyjemy procedury DELETE z VARRAYs, to czy nie stworzy to rzadkiej kolekcji?

Ponieważ VARRAY nie jest rzadką kolekcją, dlatego nie możemy z niej usuwać poszczególnych wierszy. Co więcej, jedyne wywołanie procedury, które możemy wykonać za pomocą VARRAY, to pierwsze. Czyli metoda kolekcji DELETE bez żadnych argumentów, która usuwa wszystkie elementy z kolekcji. Jedynym sposobem usunięcia pojedynczego wiersza z VARRAY jest przycięcie go od końca za pomocą innej procedury wywołania TRIM.

Czy możemy spodziewać się wyjątku w przypadku metody zbierania DELETE?

Tak, istnieje wyjątek związany z metodą zbierania PL/SQL DELETE. Jeśli procedura DELETE zostanie zastosowana do niezainicjowanej tabeli zagnieżdżonej i VARRAY, zgłosi wyjątek „Collection_is_Null”.

Przykłady metody zbierania danych PL/SQL DELETE.

Zobaczmy kilka przykładów każdego z wyżej wymienionych wywołań procedury DELETE.

Przykład 1:Proste wywołanie procedury bez argumentu.

DECLARE
    TYPE my_nested_table IS
        TABLE OF NUMBER;
    var_nt my_nested_table := my_nested_table(2,4,6,8,10,12,14,16,18,20);
BEGIN

    --Range Delete
    var_nt.DELETE;
    FOR i IN 1..var_nt.LAST LOOP
        IF var_nt.EXISTS(i) THEN
            DBMS_OUTPUT.PUT_LINE('Value at Index ['||i||'] is '|| var_nt(i));
        END IF;
    END LOOP;
END;
/

Wywołanie procedury kolekcji DELETE bez żadnego argumentu spowoduje usunięcie wszystkich elementów kolekcji, do której została zastosowana. Podobnie w powyższym przykładzie mamy zagnieżdżoną tabelę o nazwie „moja_zagnieżdżona_tabela”, nad którą zastosowaliśmy procedurę DELETE. Tak więc, po pomyślnym wykonaniu, wywołanie procedury usunie wszystkie 10 elementów numerycznych, które są w niej przechowywane.

Sugerowana lektura:Jak utworzyć zagnieżdżoną tabelę lokalnie w bloku PL/SQL.

Przykład 2:Wywołanie procedury z jednym parametrem

DECLARE
    TYPE my_nested_table IS
        TABLE OF NUMBER;
    var_nt my_nested_table := my_nested_table(2,4,6,8,10,12,14,16,18,20);
BEGIN
    DBMS_OUTPUT.PUT_LINE('After Deleted');
    --Delete Specific Index
    var_nt.DELETE(5);
    IF var_nt.EXISTS(5) THEN
            DBMS_OUTPUT.PUT_LINE('Value at Index [5] is '|| var_nt(5));
    ELSE
        DBMS_OUTPUT.PUT_LINE('Data is Deleted');
    END IF;
END;
/

Ten pojedynczy parametr jest prawidłowym numerem indeksu kolekcji. Co więcej, procedura zbierania DELETE wywołana przez podanie prawidłowego numeru indeksu usunie element określonego indeksu. Tak więc w powyższym przykładzie określiliśmy 5 jako argument metody zbierania danych PL/SQL DELETE. Zatem po pomyślnym wykonaniu wywołanie procedury usunie element z kolekcji, który jest przechowywany pod indeksem 5.

Przykład 3:Wywołanie procedury z dwoma parametrami.

DECLARE
    TYPE my_nested_table IS
        TABLE OF NUMBER;
    var_nt my_nested_table := my_nested_table(2,4,6,8,10,12,14,16,18,20);
BEGIN

    --Delete Range
    var_nt.DELETE(2,6);
    FOR i IN 1..var_nt.LAST LOOP
        IF var_nt.EXISTS(i) THEN
            DBMS_OUTPUT.PUT_LINE('Value at Index ['||i||'] is '|| var_nt(i));
        END IF;
    END LOOP;
END;
/

Ten sposób wywołania procedury DELETE jest określany jako usuwanie zakresu. Tutaj musisz określić dwa indeksy, a procedura usuwa zakres elementów, które mieszczą się między indeksem początkowym a indeksem końcowym. W powyższym przykładzie ustawiliśmy indeks początkowy na 2, a indeks końcowy na 6. Oznacza to, że po wykonaniu wywołania procedury DELETE usuniemy wszystkie elementy, które mieszczą się w tym zakresie.

Śmiało skopiuj powyższe kody do programu SQL Developer i wykonaj je samodzielnie, aby zobaczyć, jakie są wyniki.

Możesz także obejrzeć samouczek wideo na ten sam temat, aby wyjaśnić na żywo wszystkie powyższe przykłady.

To jest samouczek dotyczący metody zbierania PL/SQL DELETE w Oracle Database. Mam nadzieję, że podobało Ci się czytanie i nauczyłeś się czegoś nowego. Upewnij się, że udostępniasz tego bloga w swoich mediach społecznościowych. Dołącz do mnie na mojej stronie na Facebooku, aby poznać bardziej interesujące koncepcje PL/SQL.

Dzięki i życzę miłego dnia!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak dowiedzieć się, kiedy dana tabela została utworzona w Oracle?

  2. Partycja Oracle według słowa kluczowego

  3. Odzyskiwanie plików edytora SQL (zapytania, procedury) po awarii lub zawieszeniu się ropuchy w przypadku awarii lub zawieszenia Oracle

  4. Zapytanie przestawne Oracle SQL

  5. WHERE IN warunek nie akceptuje wartości ciągu