V Oracle lze vnořenou tabulku uložit jako databázový sloupec. To znamená, že celá vnořená tabulka je obsažena v jednom řádku databázové tabulky a každý řádek databáze může obsahovat jinou vnořenou tabulku. Chcete-li uložit vnořenou tabulku do databáze, musíte použít CREATE TYPE
příkaz k vytvoření typu vnořené tabulky namísto příkazu typu v bloku PL/SQL.
Pomocí CREATE TYPE
, typ je uložen v datovém slovníku a je tak k dispozici pro použití jako typ sloupce. Následující příklad ukazuje, jak vytvořit vnořenou tabulku jako sloupec databáze.
Oracle PL/SQL – Vytvoření vnořené tabulky v databázi
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;
K výše uvedenému výpisu a vytváření vnořených tabulek v databázi je třeba poznamenat několik věcí:
- Typ tabulky je navržen pomocí
CREATE TYPE
tak, aby mohl být uložen do datového slovníku. - Typ tabulky se používá v definici tabulky, stejně jako sloupcový objekt.
- Pro každou vnořenou tabulku v dané databázové tabulce,
NESTED TABLE
je vyžadována doložka. Tato klauzule označuje název tabulky úložiště.
Tabulka úložiště je systémem generovaná tabulka, která se používá k ukládání skutečných dat ve vnořené tabulce. Tato data nejsou uložena inline se zbytkem sloupců tabulky; je uložen samostatně.
required_reading
sloupec bude obsahovat REF
na kartu required_tab
tabulka, kde bude uložen seznam knih. Pro každý řádek course_material
, required_reading obsahuje REF na odpovídající řádky na kartě required_tab.
POZNÁMKA
Tabulka úložiště (
required_tab
ve výše uvedeném příkladu) může existovat v jiném schématu a může mít jiné parametry úložiště než hlavní tabulka. Tabulku úložiště lze popsat a existuje vuser_tables
, ale nelze k němu přímo přistupovat.
Pokud se pokusíte dotazovat nebo upravit přímo tabulku úložiště, zobrazí se chyba Oracle "ORA-22812:nelze odkazovat na tabulku úložiště sloupce vnořené tabulky". S obsahem tabulky úložiště se manipuluje pomocí SQL v hlavní tabulce.
Viz také:
- Oracle PL/SQL – Kolekce (vnořené tabulky)