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

Kolekcje Oracle PL/SQL — tworzenie zagnieżdżonej tabeli w bazie danych

W Oracle zagnieżdżona tabela może być przechowywana jako kolumna bazy danych. Oznacza to, że cała tabela zagnieżdżona jest zawarta w jednym wierszu tabeli bazy danych, a każdy wiersz bazy danych może zawierać inną tabelę zagnieżdżoną. Aby przechowywać zagnieżdżoną tabelę w bazie danych, musisz użyć CREATE TYPE instrukcja, aby utworzyć zagnieżdżony typ tabeli, zamiast instrukcji typu w bloku PL/SQL.

Używając CREATE TYPE , typ jest przechowywany w słowniku danych, dzięki czemu można go używać jako typ kolumny. Poniższy przykład ilustruje, jak utworzyć zagnieżdżoną tabelę jako kolumnę bazy danych.

Oracle PL/SQL — tworzenie zagnieżdżonej tabeli w bazie danych

CREATE TYPE BookObj AS OBJECT (
title VARCHAR2(40),
author VARCHAR2(40),
catalog_number NUMBER(4)
);

CREATE TYPE BookList AS TABLE OF BookObj;

CREATE TABLE course_material (
department CHAR(3),
course NUMBER(3),
required_reading BookList )
NESTED TABLE required_reading STORE AS required_tab;

Należy zwrócić uwagę na kilka rzeczy dotyczących powyższego zestawienia i tworzenia zagnieżdżonych tabel w bazie danych:

  • Typ tabeli został zaprojektowany za pomocą CREATE TYPE oświadczenie, aby można je było przechowywać w słowniku danych.
  • Typ tabeli jest używany w definicji tabeli, podobnie jak obiekt kolumny.
  • Dla każdej zagnieżdżonej tabeli w danej tabeli bazy danych,  NESTED TABLE klauzula jest wymagana. Ta klauzula wskazuje nazwę tabeli sklepu.

Tabela magazynu to tabela generowana przez system, która służy do przechowywania rzeczywistych danych w tabeli zagnieżdżonej. Te dane nie są przechowywane w linii z resztą kolumn tabeli; jest przechowywany oddzielnie.

required_reading kolumna będzie przechowywać REF w required_tab tabeli, w której będzie przechowywana lista książek. Dla każdego wiersza course_material , required_reading zawiera REF do odpowiednich wierszy w required_tab.

UWAGA

Tabela sklepu (required_tab w powyższym przykładzie) może istnieć w innym schemacie i mieć inne parametry przechowywania niż główna tabela. Tabela sklepu może być opisana i istnieje w user_tables , ale nie można uzyskać do nich bezpośredniego dostępu.

Jeśli spróbujesz wykonać zapytanie lub bezpośrednio zmodyfikować tabelę magazynu, otrzymasz błąd Oracle „ORA-22812:nie można odwoływać się do tabeli przechowywania kolumny tabeli zagnieżdżonej”. Zawartość tabeli sklepu jest manipulowana przez SQL w głównej tabeli.

Zobacz też:

  • Oracle PL/SQL — kolekcje (tabele zagnieżdżone)
  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Konwertuj znacznik czasu na datę w Oracle SQL

  2. Jak połączyć wiele wierszy w jeden w Oracle bez tworzenia procedury składowanej?

  3. jak zmienić datę na godzinę w Oracle 10g

  4. LISTAGG Query ORA-00937:nie jest to funkcja pojedynczej grupy

  5. Jaki jest efekt umieszczenia zatwierdzenia po DML w procedurze?