Jak utworzyć zagnieżdżoną tabelę w bloku PL/SQL
Witamy w drugim samouczku z serii PL/SQL Collection. W tym samouczku nauczymy się pierwszego typu kolekcji, którym jest „Tabela zagnieżdżona”. Tabela wewnątrz tabeli jest najprostszą definicją, jaką można wymyślić i jest poprawna pod każdym względem, ponieważ tabela osadzona w innej tabeli jest dokładnie tym, co sugeruje nazwa zagnieżdżona tabela.
Ale jeśli musimy zdefiniować kolekcję „Tabela zagnieżdżona” w bardziej wymyślny i techniczny sposób, możemy powiedzieć, że zagnieżdżone tabele są strukturami jednowymiarowymi, które są trwałe i nieograniczone z natury. Są one dostępne w SQL oraz PL/SQL i mogą być używane w tabelach, rekordach i definicjach obiektów. Ponieważ jest to nieograniczona kolekcja PL/SQL, dlatego może zawierać dowolną liczbę elementów w losowo uporządkowanym zestawie.
Definicja
Tabele zagnieżdżone to jednowymiarowe struktury, które mają charakter trwały i nieograniczony. Są one dostępne w SQL oraz PL/SQL i mogą być używane w tabelach, rekordach i definicjach obiektów. Ponieważ jest to nieograniczona kolekcja PL/SQL, dlatego może zawierać dowolną liczbę elementów w nieuporządkowanym zestawie.
Sugerowana lektura:Wprowadzenie do kolekcji PL/SQL
Zagnieżdżoną tabelę można utworzyć wewnątrz bloku PL/SQL lub w bazie danych jako obiekt typu kolekcji (obiekt schematu). W przypadku poprzedniej tabeli zagnieżdżonej zachowuje się jak tablica jednowymiarowa bez żadnego typu indeksu ani górnego limitu.
Na razie skoncentrujmy się na tym, jak utworzyć tabelę zagnieżdżoną w bloku PL/SQL, a resztę zostawmy na następny samouczek.
Składnia tworzenia tabeli zagnieżdżonej
DECLRE TYPE nested_table_name IS TABLE OF element_type [NOT NULL];
Dokładnie wyjaśniłem tę składnię w moim samouczku wideo na moim kanale YouTube. Gorąco polecam zapoznać się z tym filmem.
Przykład:jak utworzyć zagnieżdżoną tabelę w bloku PL/SQL?
Poniższy przykład służy tylko do zademonstrowania, jak utworzyć zagnieżdżoną tabelę, nie ma w tym nic nadzwyczajnego.
SET SERVEROUTPUT ON; DECLARE TYPE my_nested_table IS TABLE OF number; var_nt my_nested_table := my_nested_table (9,18,27,36,45,54,63,72,81,90); BEGIN DBMS_OUTPUT.PUT_LINE ('Value Stored at index 1 in NT is ' ||var_nt (1)); DBMS_OUTPUT.PUT_LINE ('Value Stored at index 2 in NT is ' ||var_nt (2)); DBMS_OUTPUT.PUT_LINE ('Value Stored at index 3 in NT is ' ||var_nt (3)); END; /
Powyższy przykład jest bardzo prostym, w którym stworzyliśmy zagnieżdżoną tabelę i nazwaliśmy ją „moja_zagnieżdżona_tabela” (linia numer 3). W następnym wierszu (linia 4) utworzyliśmy instancję tej samej kolekcji i użyliśmy jej do zainicjowania zagnieżdżonej tabeli i zapisania w niej niektórych danych. W sekcji wykonania uzyskujemy dostęp do przechowywanych danych indywidualnie za pomocą numeru indeksu, w ten sam sposób, w jaki robiliśmy to w tablicach.
Zamiast ręcznie uzyskiwać dostęp do danych pojedynczo za pomocą indeksu, możemy użyć pętli i cyklicznie przechodzić przez każdy element zagnieżdżonej tabeli kolekcji.
SET SERVEROUTPUT ON; DECLARE TYPE my_nested_table IS TABLE OF number; var_nt my_nested_table := my_nested_table (9,18,27,36,45,54,63,72,81,90); BEGIN FOR i IN 1..var_nt.COUNT LOOP DBMS_OUTPUT.PUT_LINE ('Value stored at index '||i||'is '||var_nt(i)); END LOOP; END; /
To kolejny przykład tworzenia zagnieżdżonej tabeli, w której przechodzimy przez dane i wyświetlamy je użytkownikowi za pomocą pętli For.
To tyle, jak tworzyć zagnieżdżone tabele w blokach PL/SQL. Bądź na bieżąco, ponieważ w następnym samouczku dowiemy się, jak tworzyć zagnieżdżone tabele jako obiekty kolekcji bazy danych i jakich wszystkich widoków słowników danych można użyć, aby uzyskać informacje o zagnieżdżonych tabelach przechowywanych w bazie danych.
To wszystko. Dziękujemy za przeczytanie i życzę miłego dnia!