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!