Вопрос к спецам по Oracle
SQL> create type user_ as object(surname varchar2(255
2 name varchar2(255;
3 /
Тип создан.
SQL> create type users as table of user_
2 /
Тип создан.
SQL> create table test_table(prim_key number,
2 user_names users)
3 nested table user_names store as
4 user_names_tableprimary key (nested_table_id, surname
5 organization index compress 1)
6 /
Таблица создана.
SQL> insert into test_table
2 values(1, users
3 /
1 строка создана.
SQL> select *
2 from test_table
3 /
PRIM_KEY USER_NAMES(SURNAME, NAME)
--------------------------------------------------------------------------------
1 USERS
SQL> insert into table(select user_names
2 from test_table
3 where prim_key = 1)
4 values('Smirnov', 'Ivan')
5 /
1 строка создана.
SQL> select *
2 from test_table
3 /
PRIM_KEY USER_NAMES(SURNAME, NAME)
--------------------------------------------------------------------------------
1 USERS(USER_('Smirnov', 'Ivan'
SQL> select t1.prim_key, t2.*
2 from test_table t1, table(t1.user_names) t2
3 /
PRIM_KEY SURNAME NAME
--------------------------------------------------------------------------------
1 Smirnov Ivan
Синтаксис конечно немного отличен от MS SQL, но вроде бы разобрался. Еще один вопрос - каким образом обеспечивается хранение этих самых пользовательских типов.
Скажем есть у меня таблица A из 3 колонок - id, Color, Pos2D (координаты).
Причем колонка с координатами имеет тип Coord{X, Y}
Вопрос- поле Pos2D c парой X, Y хранится в той же таблице A, или в таблице А только ссылка на nested table через FK. ?
Или же было нужно просто поле определенного пользователем типа? (Хотя я не совсем понимаю зачем?)
Оставить комментарий
xz_post
Чисто теоретический вопрос. Сам с Ораклом никогда не работал.Подскажите как написать SQL-скрипт который выполняет такие действия
1) создает новый пользовательский тип, например такой (назовем его типом User)
{
surname string
name string;
}
2) создает таблицу с полем типа User
3) Вставляет в эту таблицу переменную типа User c
User.surname = "Smirnov";
User.name = "Ivan";
4) делает select User.surname и User.name первого row таблицы
Как это сделать ? Очень нужно !
Экспериментировать нет возможности...
Спасибо.