Выбрать главу

Информацию о массивах переменной длины можно получить из представления

user_varrays. В таблице 13.1 описываются некоторые из столбцов

представления user_varrays.

448 Глава 13

Таблица 13.1. Столбцы в представлении user_varrays

Столбец Тип Описание

parent_table_name VARCHAR2(30) Имя таблицы, содержащей массив переменной

длины.

parent_table_

column

VARCHAR2(4000) Имя столбца родительской таблицы, содержащего

массив переменной длины.

type_owner VARCHAR2(30) Пользователь, владеющий типом массива переменной

дины.

type_name VARCHAR2(30) Имя типа массива переменной длины.

lob.name VARCHAR2(30) Название большого объекта (large object - LOB),

если массив переменной длины хранится в LOB

(подробнее о L0B см. в следующей главе).

storage_spec VARCHAR2(30) Спецификация памяти для массива переменной

длины.

return_type VARCt)AR2(20) Возвращаемый тип столбца.

element.

substitutable

VARCHAR2(25) Является или нет (Y/N) элемент varray замещаемым

для подтипа.

Примечание Информацию о всех массивах переменной длины, к которым вы имеете доступ,

можно получить из представления all_varrays.

Следующий пример получает

ставления user_varrays:

информацию о t_varray_address из пред-

SELECT parent_table_name, parent_table_column, type_name

FROM u ser_varray s

WHERE type_name = ‘ T_VARRAY_ADDRESS’ ;

PARENT_TABLE_NAME

PARENT_TABLE_COLUMN

TYPE_NAME

CUSTOMERS_WITH_VARRAY

AddressES

T_VARRAY_ADDRESS

Получение информации о вложенных таблицах

Для получения информации о вложенных таблицах можно использовать

команду DESCRIBE. В следующем примере описывается t_nested_table_

address:

□ DESCRIBE t.nested_table_add ress

t nested_table_address TABLE OF T_ADDRESS

Коллекции 449

Name Null? Type

STREET

CITY

STATE

ZIP

VARCHAR2(15)

VARCHAR2(15)

CHAR(2)

VARCHAR2(5)

В следующем примере описывается таблица customers_with_nested.

table, столбец add resses которой имеет тип t_nested_table_add ress:

DESCRIBE customers_with _nested_table

Name Null? Type

ID

FIRST_NAME

LAST_NAME

ADDRESSES

NOT NULL NUMBER(38)

VARCHAR2(10)

VARCHAR2(10)

T_NESTED_TABLE_ADDRESS

Если установить глубину показа равной 2 и еще раз описать customers.

with_nested_table, можно увидеть и атрибуты, из которых состоит t_

nested_table_address:

SET DESCRIBE DEPTH 2

DESCRIBE customers_with__nested_table

Name Null? Type

ID

FIRST_NAME

LAST_NAME

ADDRESSES

STREET

CITY

STATE

ZIP

NOT NULL NUMBER(38)

VARCHAR2(10)

VARCHAR2(10)

T_NESTED_TABLE_ADDRESS

VARCHAR2(15)

VARCHAR2(15)

CHAR(2)

VARCHAR2(5)

Кроме того, информацию о вложенных таблицах можно получить из

представления user_nested_tables. В таблице 13.2 перечислены столбцы в

user_nested_tables.

Примечание Информацию о всех вложенных таблицах, к которым вы имеете доступ, можно

получить из представления all_nested_tables.

Следующий пример получает данные о таблице nested_addresses из

user_nested_tables:

□ SELECT table_name, table_type_name, parent_table_name, parent_table_

column

FROM user_nested_tables

WHERE table_name = 1NESTED_ADDRESSES’ ;

450 Глава 13

TABLE_NAME TABLE_TYPE_NAME

PARENT_TABLE_NAME

PARENT_TABLE_COLUMN

NESTED_ADDRESSES

CUSTOMERS_WITH_NESTED_TABLE

T_NESTED_TABLE_Address

ADDRESSES

Таблица 13.2. Столбцы в представлении user_nested_tables

Столбец Тип Описание

table_name VARCHAR2(30) Имя вложенной таблицы.

table.type.owner VARCHAR2(30) Пользователь, владеющий типом вложенной таблицы.

table_type_name VARCHAR2(30) Имя типа вложенной таблицы.

parent.table.

name

VARCHAR2(30) Имя родительской таблицы, содержащей вложенную

таблицу.

parent_table_

column

VARCHAR2(4000) Имя столбца родительской таблицы, содержащей

вложенную таблицу.

storage_spec VARCHAR2(30) Спецификация хранения для вложенной таблицы.

return_type VARCHAR2(20) Возвращаемый тип столбца.

element.

substitutable

VARCHAR2(25) Является или нет (Y/N) элемент вложенной таблицы

замещаемым для подтипа.

Заполнение коллекции элементами

В этом разделе вы увидите, как заполнять varray и вложенные таблицы элементами

при помощи выражений INSERT. Вам не нужно запускать выражения

INSERT, которые показаны в этом разделе: они выполняются при запуске

сценария collection_schema. sql.

Заполнение массива переменной длины элементами

Следующий оператор INSERT вставляет строки в таблицу customers.with.

varray. Обратите внимание на использование конструктора t_varray_

add ress для указания строк для элементов varray:

□ INSERT INTO customers_with_array VALUES (

1 , ' Steve’ , ' Brown’ ,

t_varray_address(

‘ 2 State Street, Beantown, MA, 12345’ ,

‘ 4 H ill Street, Lost Town, CA, 54321’

)

INSERT INTO customers_with_array VALUES (

2, ‘ John’ , ‘ Smith’ ,

t_varray_address(

Коллекции 451

‘ 1 High Street, Newtown, CA, 12347',

‘ 3 New Street, Anytown, MI, 54323’ ,

‘ 7 Market Street, Main Town, MA, 54323’

)

);

Как видите, в первой строке хранятся два адреса, а во второй - три. Вы