sql >> Databáze >  >> RDS >> Oracle

Kolekce Oracle PL/SQL – Vytvořte vnořenou tabulku v databázi

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 v user_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)
  1. Bílá kniha statistik CBO

  2. Další bílá kniha 12c Optimizer

  3. Transformace funkčnosti třídy Wrapper

  4. Top 50 otázek k rozhovoru pro MySQL, které si musíte připravit v roce 2022