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

Jak utworzyć tabelę zagnieżdżoną przy użyciu typu danych zdefiniowanego przez użytkownika w bazie danych Oracle

Cześć ludzie! Dzisiaj nauczymy się tworzyć zagnieżdżone zbiory typów tabel przy użyciu typów danych definiowanych przez użytkownika. Mam nadzieję, że świetnie się bawiliście podczas ostatniego samouczka, w którym nauczyliśmy się procesu tworzenia zagnieżdżonej tabeli z prymitywnym typem danych. Gorąco sugeruję zapoznanie się z tym samouczkiem, ponieważ zamierzamy korzystać z zawartych w nim koncepcji.

Podobnie jak w przypadku pierwotnego typu danych, zagnieżdżoną tabelę można również utworzyć przy użyciu typów danych zdefiniowanych przez użytkownika. Do demonstracji użyjemy obiektu Oracle Object. Przedmioty nie wymagają przedstawiania, jeśli kiedykolwiek studiowałeś Koncepcje OOP. W Oracle, podobnie jak w innych językach programowania, typ obiektu jest rodzajem typu danych, który działa w taki sam sposób, jak inne typy danych, takie jak Char, Varchar2, Number itp., Ale z większą elastycznością.

Aby utworzyć obiekt Oracle, używamy naszego starego i zaufanego oświadczenia „Create Type”.

CREATE OR REPLACE TYPE object_type AS OBJECT (
  obj_id  NUMBER,
  obj_name  VARCHAR2(10)
);
/

Powyższa instrukcja utworzy obiekt oracle o nazwie „typ obiektu” z dwoma atrybutami obj_id i obj_name po pomyślnym wykonaniu. Ten typ danych może być następnie użyty do stworzenia tabeli zagnieżdżonej.

CREATE OR REPLACE TYPE My_NT IS TABLE OF object_type;
/

Myślę, że jeśli sprawdziłeś ostatni samouczek, powyższe stwierdzenie będzie bardzo znajome, z wyjątkiem typu elementu, który jest tam prymitywnym typem danych. Tutaj używamy zdefiniowanego przez użytkownika typu danych, którym jest obiekt Oracle.

Powyższe stwierdzenie zostało szczegółowo wyjaśnione w ostatnim samouczku, który możesz sprawdzić tutaj.

Co oznacza tworzenie tabeli zagnieżdżonej przy użyciu obiektu Oracle?

Za każdym razem, gdy tworzysz tabelę zagnieżdżoną przy użyciu obiektu Oracle, atrybuty obiektu stają się kolumnami tej tabeli. Na przykład w naszym przypadku utworzyliśmy zagnieżdżoną tabelę „My_NT” przy użyciu typu danych zdefiniowanego przez użytkownika, którym jest obiekt Oracle „Object_Type”, który ma dwa atrybuty obj_id i obj_name. Te dwa atrybuty obiektu będą działać jako kolumny tabeli. Poniższe zdjęcie pomoże ci lepiej to zrozumieć.

Teraz, gdy stworzyliśmy zagnieżdżoną tabelę przy użyciu typu danych definiowanego przez użytkownika, nadszedł czas, aby wprowadzić ją do pracy.

CREATE TABLE Base_Table(
  tab_id  NUMBER,
  tab_ele My_NT
)NESTED TABLE tab_ele STORE AS stor_tab_1;
/

Powyższa tabela o nazwie „Base_Table” jest prosta i ma 2 kolumny „tab_id” i „tab_ele”. Pierwsza kolumna jest typu Liczba, a druga kolumna jest typu Tabela zagnieżdżona. Oznacza to, że druga kolumna zawiera w sobie tabelę i ta tabela jest naszą zagnieżdżoną tabelą „My_Nt”

Chociaż ta „Tabela_Podstawowa” jest prostą tabelą, ale jedna z jej kolumn zawiera zagnieżdżoną tabelę, co rodzi kilka pytań, takich jak:

Jak wstawić dane do tabeli? Jak zaktualizować dane tabeli? Albo jak pobrać dane z tabeli? Spróbujmy znaleźć odpowiedzi na wszystkie te pytania pojedynczo.

Jak wstawić dane do zagnieżdżonej tabeli?

Tak, zgadzam się, że wstawianie danych do tabeli, która ma kolumnę typu tabeli zagnieżdżonej, może być trudne, ale jakoś musimy znaleźć sposób, aby to zrobić. Ponieważ tabela bez danych jest dla nas bezużyteczna. Dobrze? Zobaczmy, jak możemy to zrobić.

 INSERT INTO base_table (tab_id, tab_ele) VALUES
 (801,  -- value for 1st colum 
   My_NT (object_type (1,'Superman') -- values for 2nd column )
 );

Jak widać w tej instrukcji INSERT wszystko jest takie samo jak w normalnym Insert DML, z wyjątkiem linii numer 3, w której wstawiamy dane do drugiej kolumny tabeli. Aby wstawić dane do kolumny typu Nested Table, musisz najpierw wpisać nazwę swojej zagnieżdżonej tabeli, która w tym przypadku to „My_NT”, a następnie nazwę swojego obiektu Oracle, która tutaj to „Object_Type” a następnie wartości, które chcesz wstawić do tabeli. Nie zapomnij dopasować nawiasów dla nazwy tabeli i nazwy obiektu, w przeciwnym razie otrzymasz błąd.

Jak zaktualizować wartości zagnieżdżonej tabeli?

UPDATE base_table SET tab_ele = My_NT(object_type(1,'SpiderMan')) WHERE tab_id = 801; 

Powyższe oświadczenie DML odpowiednio zaktualizuje wartości po pomyślnym wykonaniu.

Jak pobrać dane z zagnieżdżonej tabeli?

Możesz po prostu wykonać instrukcję Select na swojej tabeli, aby uzyskać dane.

Select tab_id, tab_ele FROM base_table;

Poniższy obrazek pokazuje wynik zwrócony z tej tabeli.

Jak widać, ta instrukcja SELECT pokaże dane z kolumn, które mają podstawowy typ danych, ale tylko nazwę tabeli zagnieżdżonej wraz z obiektem Oracle z kolumny, którą definiujesz jako typ tabeli zagnieżdżonej. Możesz łatwo rozwiązać ten problem, używając takiego wyrażenia TABLE.

SELECT * FROM TABLE(
  SELECT tab_ele FROM Base_Table WHERE tab_id = 801
)

Pomyślne wykonanie powyższego zapytania pokaże dane z drugiej kolumny tabeli „Base_Table” w formacie relacyjnym.

To tyle, jeśli chodzi o ten samouczek, mam nadzieję, że podobało Ci się i nauczyłeś czegoś nowego. Zapisz się i zarejestruj. 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. Wyzwalacz w celu wymuszenia relacji M-M

  2. Jak zaplanować pracę w Oracle SQL Developer?

  3. Czy istnieje odpowiednik Oracle SQL Server's OUTPUT INSERTED.*?

  4. ORA-02287:numer sekwencji jest tutaj niedozwolony

  5. Warunkowo zdefiniuj kursor