#oracle #plsql #oracle10g
#Oracle #plsql #oracle10g
Вопрос:
CREATE TYPE artist_table_type AS TABLE OF REF artist_type;
/
INSERT INTO track_table VALUES (
1,
'test title',
123,
to_date('12-09-1989', 'dd-mm-yyyy'),
artist_table_type(
-- What goes here???
),
artist_table_type());
Я хочу вставить в эту таблицу вложенную таблицу ссылок на объекты. Могу ли я это сделать? Мне нужно будет разархивировать эту таблицу?
Комментарии:
1. Где хранятся
artist_type
объекты, на которые вы хотите указать?2. Существует единственная таблица, в которой хранятся artist_type , и все объекты, которые ссылаются на них, хранят либо ссылки, либо таблицы ссылок на эти объекты.
Ответ №1:
Вы можете создать вложенную таблицу в SQL с помощью функций COLLECT и CAST. Например, если вы хотите выбрать объекты исполнителя из какой-либо другой таблицы на основе некоторого условия, я считаю, что это должно сработать:
INSERT INTO track_table
SELECT
1,
'test title',
123,
to_date('12-09-1989', 'dd-mm-yyyy'),
CAST(COLLECT(REF(artists)) AS artist_table_type)
artist_table_type()
FROM
artists
WHERE <whatever the condition is for selecting the appropriate artists>
;
Ответ №2:
INSERT INTO TABLE(this table is syntax dont think its name of the table..)
(SELECT t.nested_tbl_colm
(nested_tbl_colm is nested table)
FROM table_name t
(table_name is the normal table whose one or more column is nested table here its nested_tbl_colm)
WHERE t.tbl_colm= any input or conditions)
VALUES
(value to be inserted);
COMMIT;
Остальная часть столбца будет вставлена обычным образом, и приведенный выше код используется для вставки во вложенную таблицу.
Дайте мне знать, если вы не поняли.
Комментарии:
1. Спасибо за ответ, но не могли бы вы немного конкретизировать его? Я не уверен, что подразумевается под комментарием, а что должно быть заполнено мной.