create table xxmy.car_flex_test(
id number not null,
name varchar2(50),
car_number varchar2(9),
attribute_category varchar2(30),
attribute1 varchar2(150),
attribute2 varchar2(150),
attribute3 varchar2(150),
attribute4 varchar2(150),
attribute5 varchar2(150),
attribute6 varchar2(150),
attribute7 varchar2(150),
attribute8 varchar2(150),
attribute9 varchar2(150),
attribute10 varchar2(150),
attribute11 varchar2(150),
attribute12 varchar2(150),
attribute13 varchar2(150),
attribute14 varchar2(150),
attribute15 varchar2(150),
created_by number not null,
creation_date date not null,
last_updated_by number not null,
last_update_date date not null,
last_update_login number not null,
object_version_number number not null)
/
create or replace view car_flex_test_dfv as
select rowid row_id,
fts.attribute_category,
fts.attribute1,
fts.attribute2,
fts.attribute3,
fts.attribute1 || '.' || fts.attribute2 || '.' ||
fts.attribute3 concatenated_segments
from xxmy.car_flex_test fts;
declare
l_table_id number;
p_table_name varchar2(30) := 'CAR_FLEX_TEST';
cursor c_data is
select column_name,
column_id,
data_type,
data_length,
nullable,
'N' translatable
from all_tab_columns
where owner = 'XXMY'
and upper(table_name) = p_table_name
order by column_id;
BEGIN
--Проверка регистрировалась ли таблица ранее
begin
select table_id
into l_table_id
from fnd_tables ft, fnd_application fa
where fa.application_short_name = 'XXMY'
and ft.application_id = fa.application_id
and upper(ft.table_name) = p_table_name;
exception
when NO_DATA_FOUND then
l_table_id := null;
end;
if l_table_id is not null then
return;
end if;
--Регистрируем таблицу
ad_dd.register_table(p_appl_short_name => 'XXMY',
p_tab_name => p_table_name,
p_tab_type => 'T');
--Регистрируем столбцы таблицы
for v_data in c_data loop
ad_dd.register_column(p_appl_short_name => 'XXMY',
p_tab_name => p_table_name,
p_col_name => v_data.column_name,
p_col_seq => v_data.column_id,
p_col_type => v_data.data_type,
p_col_width => v_data.data_length,
p_nullable => v_data.nullable,
p_translate => v_data.translatable);
end loop;
commit;
end;
declare
p_table_name varchar2(30) := 'CAR_FLEX_TEST';
begin
ad_dd.delete_table(p_appl_short_name => 'XXMY',
p_tab_name => p_table_name);
end;
with segments as(
select rownum rn, fcu.form_above_prompt segname
from FND_DESCRIPTIVE_FLEXS dfx,
FND_DESCR_FLEX_CONTEXTS dfc,
FND_DESCR_FLEX_COL_USAGE_TL fcu
where dfx.descriptive_flexfield_name = 'CAR_FLEX_TEST'
and dfx.application_table_name = dfc.descriptive_flexfield_name
and fcu.descriptive_flexfield_name = dfx.descriptive_flexfield_name
and fcu.descriptive_flex_context_code = dfc.descriptive_flex_context_code
and fcu.source_lang = 'RU'
and fcu.language = 'RU'
and dfc.descriptive_flex_context_code = 'CARS'
) select substr(sys_connect_by_path(segname, '|'), 2)
from segments
where connect_by_isleaf = 1
connect by prior rn = rn - 1
start with rn = 1