В Oracle вложена таблица може да се съхранява като колона на база данни. Това означава, че цялата вложена таблица се съдържа в един ред от таблицата на базата данни и всеки ред от базата данни може да съдържа различна вложена таблица. За да съхраните вложена таблица в базата данни, трябва да използвате CREATE TYPE
оператор за създава типа на вложена таблица, а не оператор за тип в PL/SQL блок.
С помощта на CREATE TYPE
, типът се съхранява в речника на данните и по този начин е достъпен за използване като тип колона. Следният пример илюстрира как да създадете вложена таблица като колона на база данни.
Oracle PL/SQL – Създаване на вложена таблица в базата данни
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;
Има няколко неща, които трябва да се отбележат относно горния списък и създаването на вложени таблици в базата данни:
- Типът на таблицата е проектиран с
CREATE TYPE
изявление, за да може да се съхранява в речника на данните. - Типът на таблицата се използва в дефиницията на таблицата, точно като обект на колона.
- За всяка вложена таблица в дадена таблица на база данни,
NESTED TABLE
е необходима клауза. Тази клауза указва името на таблицата на магазина.
Таблицата за съхранение е генерирана от системата таблица, която се използва за съхраняване на действителните данни във вложената таблица. Тези данни не се съхраняват в ред с останалите колони на таблицата; той се съхранява отделно.
required_reading
колоната ще съхранява REF
в required_tab
таблица, където ще се съхранява списъкът с книги. За всеки ред course_material
, required_reading съдържа REF към съответните редове в задължителния раздел.
ЗАБЕЛЕЖКА
Таблицата на магазина (
required_tab
в горния пример) може да съществува в друга схема и може да има различни параметри за съхранение от основната таблица. Таблицата на магазина може да бъде описана и съществува вuser_tables
, но не може да бъде достъпен директно.
Ако се опитате да направите заявка или да промените директно таблицата на магазина, ще получите грешката на Oracle „ORA-22812:не може да препраща към таблицата за съхранение на колона за вложена таблица“. Съдържанието на таблицата на магазина се манипулира чрез SQL на главната таблица.
Вижте също:
- Oracle PL/SQL – Колекции (вложени таблици)
-
Как да изпълним процедура с процедурата DBMS_SCHEDULER.CREATE_JOB
-
PLS-00201 идентификатор „PACKAGENAME.PROCEDURENAME“ трябва да бъде деклариран
-
Oracle копира данни в друга таблица
-
Как да експортирате данни в CSV файл в Oracle с помощта на PL SQL процедура
-
Oracle – Материализиран изглед все още е достъпен по време на пълно опресняване. Как работи това?