Вложенный тип данных Oracle в виде плоского файла

#oracle

#Oracle

Вопрос:

Это скрипт для создания набора данных вложенной таблицы:

 create table descriptions(
id number,
description varchar2(10)
);

insert into descriptions values(1,'abfd');
insert into descriptions values(1,'frte');
insert into descriptions values(2,'eewd');
insert into descriptions values(2,'outr');

create or replace type nt_description as table of varchar2(10);
-- the following query produces a dataset to save as a flat file
select id, cast(collect(description) as nt_description) as nested_column from descriptions group by id;
  

Чего я хочу добиться, так это создать плоский выходной текстовый файл. Однако результат вывода вложенного столбца в виде плоского файла является неожиданным при использовании графического интерфейса разработчика SQL. Формат выходного файла следующий при экспорте данных в виде текста:

 "ID"    "NESTED_COLUMN"
1   DBUSER.NT_DESCRIPTION('abfd','frte')
2   DBUSER.NT_DESCRIPTION('eewd','outr')
  

Я хотел бы получить следующий формат вместо предыдущего формата:

 "ID"    "NESTED_COLUMN"
1   'abfd','frte'
2   'eewd','outr'
  

Я могу добиться этого с помощью текстового редактора и замены или регулярного выражения нежелательных данных (с помощью notepad ), но возможно ли получить тот же результат, не заменяя вручную «DBUSER.NT_DESCRIPTION (» и «)» на пустую строку?

Ответ №1:

Если вам обязательно нужно использовать сбор, вы можете создать функцию, как показано в этой ссылке.

Если нет, вы можете использовать wm_concat:

 select d.id, 
       wm_concat(d.description)
       nested_column 
from 
       descriptions d
group by id;