The following lines contain the word 'select', 'insert', 'update' or 'delete':
Rob Flippo 25-JUL-06 Bug#5331497 insert_value_sets procedure
default_member_id, default_load_member_id and
default_hierarchy_obj_id should be null when
value_set is created, since these values all come
from sequence that is not identical between source
and target db
mwickram 08-AUG-06 Bug 5287339 - DIMENSION HIERARCHY MIGRATION FAILS
**************************************************************************/
-------------------------------
-- Declare package variables --
-------------------------------
f_set_status BOOLEAN;
FUNCTION GET_INSERT_B_SQL(p_source_db_link IN VARCHAR2,
p_dim_varchar_lbl IN VARCHAR2) RETURN VARCHAR2;
FUNCTION GET_INSERT_DIM_GRP_B_SQL(p_source_db_link IN VARCHAR2) RETURN VARCHAR2;
FUNCTION GET_INSERT_DIM_GRP_TL_SQL(p_source_db_link IN VARCHAR2) RETURN VARCHAR2;
FUNCTION GET_INSERT_TL_SQL(p_source_db_link IN VARCHAR2,
p_dim_varchar_lbl IN VARCHAR2) RETURN VARCHAR2;
PROCEDURE INSERT_CALENDARS(p_source_db_link IN VARCHAR2);
PROCEDURE INSERT_VALUE_SETS(p_source_db_link IN VARCHAR2);
PROCEDURE UPDATE_CALP_ATTRIBUTES(p_source_db_link IN VARCHAR2);
SELECT DB_LINK_NAME
INTO gv_db_link_name
FROM FEM_DB_LINKS_VL
WHERE UPPER(DATABASE_LINK) = UPPER(p_db_link);
l_db_link_sql := 'SELECT SYSDATE FROM DUAL@'||p_db_link;
l_chk_dim_name_sql VARCHAR2(1000) := 'SELECT DIMENSION_NAME ' ||
'FROM FEM_DIMENSIONS_TL '||'@'||p_source_db_link||' '||
'WHERE UPPER(DIMENSION_NAME) = UPPER(:src_dim_name)';
l_dim_name_sql VARCHAR2(2000) := 'SELECT DIMENSION_ID, '||
'USER_DEFINED_FLAG, '||
'GROUP_USE_CODE, '||
'VALUE_SET_REQUIRED_FLAG, '||
'MEMBER_B_TABLE_NAME, '||
'ATTRIBUTE_TABLE_NAME, '||
'MEMBER_DISPLAY_CODE_COL, '||
'MEMBER_NAME_COL, '||
'MEMBER_DESCRIPTION_COL, '||
'MEMBER_TL_TABLE_NAME, '||
'MEMBER_COL, '||
'DECODE(LOADER_OBJECT_DEF_ID, NULL, NULL, LOADER_OBJECT_DEF_ID+ 700), '||
'HIERARCHY_TABLE_NAME, '||
'DECODE(HIERARCHY_TABLE_NAME, NULL, NULL, HIERARCHY_TABLE_NAME||''_T'')'||
'FROM FEM_XDIM_DIMENSIONS_VL '||'@'||p_source_db_link||' '||
'WHERE DIMENSION_NAME = :p_source_user_dim_name';
SELECT DIMENSION_ID,
DECODE(LOADER_OBJECT_DEF_ID, NULL, NULL, LOADER_OBJECT_DEF_ID+ 700),
USER_DEFINED_FLAG,
GROUP_USE_CODE,
SIMPLE_DIMENSION_FLAG,
VALUE_SET_REQUIRED_FLAG,
INTF_MEMBER_B_TABLE_NAME,
INTF_MEMBER_TL_TABLE_NAME,
INTF_ATTRIBUTE_TABLE_NAME,
MEMBER_B_TABLE_NAME,
ATTRIBUTE_TABLE_NAME,
MEMBER_DISPLAY_CODE_COL,
MEMBER_NAME_COL,
MEMBER_DESCRIPTION_COL,
MEMBER_TL_TABLE_NAME,
MEMBER_COL,
HIERARCHY_TABLE_NAME,
DECODE(HIERARCHY_TABLE_NAME, NULL, NULL, HIERARCHY_TABLE_NAME||'_T')
INTO gv_dim_props_rec.DIMENSION_ID,
gv_dim_props_rec.MIGRATION_OBJ_DEF_ID,
gv_dim_props_rec.USER_DEFINED_FLAG,
gv_dim_props_rec.GROUP_USE_CODE,
gv_dim_props_rec.SIMPLE_DIMENSION_FLAG,
gv_dim_props_rec.VALUE_SET_REQUIRED_FLAG,
gv_dim_props_rec.INTF_MEMBER_B_TABLE_NAME,
gv_dim_props_rec.INTF_MEMBER_TL_TABLE_NAME,
gv_dim_props_rec.INTF_ATTRIBUTE_TABLE_NAME,
gv_dim_props_rec.MEMBER_B_TABLE_NAME,
gv_dim_props_rec.ATTRIBUTE_TABLE_NAME,
gv_dim_props_rec.MEMBER_DISPLAY_CODE_COL,
gv_dim_props_rec.MEMBER_NAME_COL,
gv_dim_props_rec.MEMBER_DESCRIPTION_COL,
gv_dim_props_rec.MEMBER_TL_TABLE_NAME,
gv_dim_props_rec.MEMBER_COL,
gv_dim_props_rec.HIERARCHY_TABLE_NAME,
gv_dim_props_rec.HIERARCHY_INTF_TABLE_NAME
FROM FEM_XDIM_DIMENSIONS_VL
WHERE DIMENSION_VARCHAR_LABEL = UPPER(p_dim_name);
SELECT object_id
INTO gv_dim_props_rec.MIGRATION_OBJ_ID
FROM fem_object_definition_b
WHERE object_definition_id = gv_dim_props_rec.MIGRATION_OBJ_DEF_ID
AND object_id IN (SELECT object_id FROM fem_object_catalog_b
WHERE object_type_code = 'DIM_MEMBER_MIGRATION');
SELECT object_id
INTO gv_src_dim_props_rec.MIGRATION_OBJ_ID
FROM fem_object_definition_b
WHERE object_definition_id = gv_src_dim_props_rec.MIGRATION_OBJ_DEF_ID
AND object_id IN (SELECT object_id FROM fem_object_catalog_b
WHERE object_type_code = 'DIM_MEMBER_MIGRATION');
l_chk_version_name_sql VARCHAR2(1000) := 'SELECT VERSION_NAME ' ||
'FROM FEM_DIM_ATTR_VERSIONS_TL '||'@'||p_source_db_link||' '||
'WHERE UPPER(VERSION_NAME) = UPPER(:p_version_name)';
l_chk_version_disp_cd_sql VARCHAR2(1000) := 'SELECT VERSION_DISPLAY_CODE' ||
'FROM FEM_DIM_ATTR_VERSIONS_B '||'@'||p_source_db_link||' '||
'WHERE UPPER(VERSION_DISPLAY_CODE) = UPPER(:p_version_disp_cd)';
FUNCTION get_insert_b_sql(p_source_db_link IN VARCHAR2, p_dim_varchar_lbl IN VARCHAR2) RETURN VARCHAR2
IS
l_dim_vc_select VARCHAR2(35) := ''''||p_dim_varchar_lbl||'''';
l_base_select VARCHAR2(35) := 'B.'||gv_src_dim_props_rec.MEMBER_DISPLAY_CODE_COL;
l_vs_select VARCHAR2(35) := 'VS.VALUE_SET_DISPLAY_CODE';
l_dg_select VARCHAR2(35) := 'DG.DIMENSION_GROUP_DISPLAY_CODE';
l_status_select VARCHAR2(10) := '''LOAD''';
l_batch_name_select VARCHAR2(30) := '''Y''';
l_insert_table VARCHAR2(100) := gv_dim_props_rec.INTF_MEMBER_B_TABLE_NAME;
l_where_clause VARCHAR2(1000) := --' WHERE NOT EXISTS (SELECT 1 FROM '||l_insert_table||' INTF WHERE INTF.'||
-- gv_dim_props_rec.MEMBER_DISPLAY_CODE_COL||' = '||l_base_select||')'||
' WHERE {{data_slice}}';
l_cal_period_select VARCHAR2(1000) := 'CA2.DATE_ASSIGN_VALUE, CA1.NUMBER_ASSIGN_VALUE, ''LOAD'', CAL.CALENDAR_DISPLAY_CODE, '||
'DG.DIMENSION_GROUP_DISPLAY_CODE, ''Y''';
l_insert_sql VARCHAR2(32767);
l_insert_sql := 'INSERT INTO '||l_insert_table||
'(SELECT '|| l_cal_period_select||
' FROM '|| l_cal_period_from||l_cal_period_where||')';
l_base_select := l_base_select||l_comma1;
l_status_select := l_status_select||l_comma1;
l_vs_select := l_vs_select ||l_comma1;
l_vs_select := NULL;
l_dg_select := NULL;
l_dg_select := l_dg_select||l_comma1;
l_dim_vc_select := l_dim_vc_select||l_comma1;
l_dim_vc_select := NULL;
l_insert_sql := 'INSERT INTO '||l_insert_table||
'(SELECT '|| l_dim_vc_select||l_base_select||
l_vs_select||
l_status_select||
l_dg_select||
l_batch_name_select||
' FROM '|| l_base_from||
l_vs_from||
l_dim_grp_from||l_where_clause||')';
RETURN l_insert_sql;
FUNCTION get_insert_tl_sql(p_source_db_link IN VARCHAR2, p_dim_varchar_lbl IN VARCHAR2) RETURN VARCHAR2
IS
l_dim_vc_select VARCHAR2(35) := ''''||p_dim_varchar_lbl||'''';
l_tl_dc_select VARCHAR2(35) := 'B.'||gv_src_dim_props_rec.MEMBER_DISPLAY_CODE_COL;
l_vs_select VARCHAR2(35) := 'VS.VALUE_SET_DISPLAY_CODE';
l_status_select VARCHAR2(10) := '''LOAD''';
l_tl_lang_select VARCHAR2(35) := 'TL.LANGUAGE';
l_tl_name_select VARCHAR2(35) := 'TL.'||gv_src_dim_props_rec.MEMBER_NAME_COL;
l_tl_desc_select VARCHAR2(35) := 'TL.'||gv_src_dim_props_rec.MEMBER_DESCRIPTION_COL;
l_batch_name_select VARCHAR2(30) := '''Y''';
l_insert_table VARCHAR2(100) := gv_dim_props_rec.INTF_MEMBER_TL_TABLE_NAME;
' AND {{data_slice}} AND EXISTS (SELECT 1 FROM FND_LANGUAGES L'||
' WHERE TL.LANGUAGE = L.LANGUAGE_CODE AND L.INSTALLED_FLAG IN (''I'',''B''))';
l_cal_period_select VARCHAR2(1000) := 'CA2.DATE_ASSIGN_VALUE, CA1.NUMBER_ASSIGN_VALUE, TL.LANGUAGE, '||
'TL.CAL_PERIOD_NAME, TL.DESCRIPTION, ''LOAD'', CAL.CALENDAR_DISPLAY_CODE, '||
'DG.DIMENSION_GROUP_DISPLAY_CODE, ''Y''';
' AND EXISTS (SELECT 1 FROM FND_LANGUAGES L'||
' WHERE TL.LANGUAGE = L.LANGUAGE_CODE AND L.INSTALLED_FLAG IN (''I'',''B''))';
l_insert_sql VARCHAR2(32767);
l_insert_sql := 'INSERT INTO '||l_insert_table||
'(SELECT '|| l_cal_period_select||
' FROM '|| l_cal_period_from||l_cal_period_where||')';
l_tl_dc_select := l_tl_dc_select ||l_comma1;
l_tl_lang_select := l_tl_lang_select||l_comma1;
l_tl_name_select := l_tl_name_select ||l_comma1;
l_tl_desc_select := l_tl_desc_select ||l_comma1;
l_status_select := l_status_select||l_comma1;
l_dim_vc_select := l_dim_vc_select||l_comma1;
l_dim_vc_select := NULL;
l_vs_select := l_vs_select ||l_comma1;
l_vs_select := NULL;
l_dg_select := NULL;
l_status_select := l_status_select||l_comma1;
l_insert_sql := 'INSERT INTO '||l_insert_table||
'(SELECT '|| l_dim_vc_select||l_tl_dc_select||
l_vs_select||
l_tl_lang_select||
l_tl_name_select||
l_tl_desc_select||
l_status_select||
l_batch_name_select||
' FROM '|| l_tl_from||
l_vs_from||l_where_clause||')';
RETURN l_insert_sql;
l_insert_clause VARCHAR2(100) :=
' INSERT INTO '|| gv_dim_props_rec.INTF_ATTRIBUTE_TABLE_NAME;
l_insert_cols VARCHAR2(2000) :=
' ( '||gv_dim_props_rec.MEMBER_DISPLAY_CODE_COL||', ATTRIBUTE_VARCHAR_LABEL,'||
' ATTRIBUTE_ASSIGN_VALUE, ATTR_ASSIGN_VS_DISPLAY_CODE, STATUS, CREATED_BY_DIM_MIGRATION_FLAG,'||
' CALPATTR_CAL_DISPLAY_CODE, CALPATTR_DIMGRP_DISPLAY_CODE, CALPATTR_END_DATE, CALPATTR_PERIOD_NUM,'||
' VERSION_DISPLAY_CODE'||
' {{vs_insert_col}} {{calp_insert_col}} )';
l_calp_insert_cols VARCHAR2(500) :=
' ,CAL_PERIOD_END_DATE, CAL_PERIOD_NUMBER, CALENDAR_DISPLAY_CODE, DIMENSION_GROUP_DISPLAY_CODE';
l_shared_vc_insert VARCHAR2(50) := 'DIMENSION_VARCHAR_LABEL';
l_vs_insert_cols VARCHAR2(50) :=
' ,VALUE_SET_DISPLAY_CODE';
l_select_clause VARCHAR2(2000) :=
' ( SELECT {{vc_select_clause}}'||
' B.'|| gv_src_dim_props_rec.MEMBER_DISPLAY_CODE_COL||
' ,DA.ATTRIBUTE_VARCHAR_LABEL'||
' ,DECODE(DA.ATTRIBUTE_VALUE_COLUMN_NAME'||
' ,''DATE_ASSIGN_VALUE'', TO_CHAR(ATTR.DATE_ASSIGN_VALUE, ''{{icx_date_format}}'')'||
' ,''NUMBER_ASSIGN_VALUE'', TO_CHAR(ATTR.NUMBER_ASSIGN_VALUE)'||
' ,''VARCHAR_ASSIGN_VALUE'', ATTR.VARCHAR_ASSIGN_VALUE'||
' ,''DIM_ATTRIBUTE_NUMERIC_MEMBER'', FEM_DIMENSION_UTIL_PKG.Get_Dim_Member_Display_Code@'||p_source_db_link||'('||
' DA.ATTRIBUTE_DIMENSION_ID'||
' ,TO_CHAR(ATTR.DIM_ATTRIBUTE_NUMERIC_MEMBER)'||
' ,ATTR.DIM_ATTRIBUTE_VALUE_SET_ID)'||
' ,''DIM_ATTRIBUTE_VARCHAR_MEMBER'', FEM_DIMENSION_UTIL_PKG.Get_Dim_Member_Display_Code@'||p_source_db_link||'('||
' DA.ATTRIBUTE_DIMENSION_ID'||
' ,ATTR.DIM_ATTRIBUTE_VARCHAR_MEMBER'||
' ,ATTR.DIM_ATTRIBUTE_VALUE_SET_ID)'||
' ) AS ATTR_ASSIGN_VALUE'||
' ,DECODE(DA.ATTRIBUTE_DATA_TYPE_CODE'||
' ,''DIMENSION'', DECODE(ATTR.DIM_ATTRIBUTE_VALUE_SET_ID'||
' ,NULL,NULL'||
' ,FEM_MIR_PKG.Get_Dim_Member_Display_Code@'||p_source_db_link||'('||
' ''VALUE_SET'',ATTR.DIM_ATTRIBUTE_VALUE_SET_ID)'||
' )'||
' ,NULL'||
' ) AS ATTR_ASSIGN_VS_DISPLAY_CODE'||
' ,DECODE(DA.ATTRIBUTE_DIMENSION_ID, 1, ''UPDATE'', ''LOAD'')'||
' ,''Y'''||
' ,NULL AS CALPATTR_CAL_DISPLAY_CODE'||
' ,NULL AS CALPATTR_DIMGRP_DISPLAY_CODE'||
' ,NULL AS CALPATTR_END_DATE'||
' ,NULL AS CALP_ATTR_PERIOD_NUM'||
' ,AV.VERSION_DISPLAY_CODE'||
' {{vs_select_clause}} {{calp_select_clause}}';
l_dim_vc_select VARCHAR2(50) := ''''||p_dim_varchar_lbl||''''||',';
l_calp_select VARCHAR2(500) :=
' ,CA2.DATE_ASSIGN_VALUE, CA1.NUMBER_ASSIGN_VALUE, CAL.CALENDAR_DISPLAY_CODE'||
' ,DG.DIMENSION_GROUP_DISPLAY_CODE';
l_vs_select_clause VARCHAR2(50) :=
' ,VS.VALUE_SET_DISPLAY_CODE';
l_insert_sql VARCHAR2(32767);
l_select_clause := REPLACE(l_select_clause,'{{icx_date_format}}',l_icx_date_format);
l_insert_cols := REPLACE(l_insert_cols, gv_dim_props_rec.MEMBER_DISPLAY_CODE_COL||', ', '');
l_insert_cols := REPLACE(l_insert_cols, '{{calp_insert_col}}', l_calp_insert_cols);
l_select_clause := REPLACE(l_select_clause,'{{calp_select_clause}}',l_calp_select);
l_select_clause := REPLACE(l_select_clause,'B.'|| gv_src_dim_props_rec.MEMBER_DISPLAY_CODE_COL ||',' , '');
l_insert_cols := REPLACE(l_insert_cols, '{{calp_insert_col}}','');
l_select_clause := REPLACE(l_select_clause,'{{calp_select_clause}}','');
l_insert_cols := REPLACE(l_insert_cols, gv_dim_props_rec.MEMBER_DISPLAY_CODE_COL,
l_shared_vc_insert||l_shared_member_col);
l_select_clause := REPLACE(l_select_clause,'{{vc_select_clause}}',l_dim_vc_select);
l_select_clause := REPLACE(l_select_clause,'{{vc_select_clause}}','');
l_insert_cols := REPLACE(l_insert_cols,'{{vs_insert_col}}',l_vs_insert_cols);
l_select_clause := REPLACE(l_select_clause,'{{vs_select_clause}}',l_vs_select_clause);
l_insert_cols := REPLACE(l_insert_cols,'{{vs_insert_col}}','');
l_select_clause := REPLACE(l_select_clause,'{{vs_select_clause}}','');
l_insert_sql := l_insert_clause||l_insert_cols||l_select_clause||l_from_clause||l_where_clause;
RETURN l_insert_sql;
l_dim_sql VARCHAR2(500) := 'SELECT MEMBER_B_TABLE_NAME,'||
' MEMBER_DISPLAY_CODE_COL,'||
' MEMBER_COL '||
' FROM '||l_xdim_table||
' WHERE DIMENSION_ID = :attr_dimension_id';
l_attr_dc_sql := 'SELECT '||l_display_code_col ||
' FROM '||l_table_name ||
' WHERE '||l_member_col||' = :value';
PROCEDURE update_calp_attributes(p_source_db_link IN VARCHAR2)
IS
l_attr_assign_value VARCHAR2(1000);
'SELECT ATTRIBUTE_ASSIGN_VALUE '||
' FROM '||gv_dim_props_rec.INTF_ATTRIBUTE_TABLE_NAME||
' WHERE STATUS = ''UPDATE''';
l_select_sql VARCHAR2(2000) :=
'SELECT CAL.CALENDAR_DISPLAY_CODE,'||
' DG.DIMENSION_GROUP_DISPLAY_CODE,'||
' ATTR.NUMBER_ASSIGN_VALUE AS GL_PERIOD_NUM,'||
' ATTR1.DATE_ASSIGN_VALUE AS CAL_PERIOD_END_DATE'||
' FROM FEM_CALENDARS_B@'||p_source_db_link||' CAL,'||
' FEM_DIMENSION_GRPS_B@'||p_source_db_link||' DG,'||
' FEM_CAL_PERIODS_B@'||p_source_db_link||' CP,'||
' FEM_CAL_PERIODS_ATTR@'||p_source_db_link||' ATTR,'||
' FEM_DIM_ATTRIBUTES_B@'||p_source_db_link||' DA,'||
' FEM_DIM_ATTR_VERSIONS_B@'||p_source_db_link||' AV,'||
' FEM_CAL_PERIODS_ATTR@'||p_source_db_link||' ATTR1,'||
' FEM_DIM_ATTRIBUTES_B@'||p_source_db_link||' DA1,'||
' FEM_DIM_ATTR_VERSIONS_B@'||p_source_db_link||' AV1'||
' WHERE CP.CAL_PERIOD_ID = :cal_period_id'||
' AND CP.CALENDAR_ID = CAL.CALENDAR_ID'||
' AND DG.DIMENSION_GROUP_ID = CP.DIMENSION_GROUP_ID'||
' AND ATTR.ATTRIBUTE_ID = DA.ATTRIBUTE_ID'||
' AND ATTR.CAL_PERIOD_ID = CP.CAL_PERIOD_ID'||
' AND DA.ATTRIBUTE_VARCHAR_LABEL = ''GL_PERIOD_NUM'''||
' AND ATTR.VERSION_ID = AV.VERSION_ID'||
' AND AV.DEFAULT_VERSION_FLAG = ''Y'''||
' AND ATTR1.ATTRIBUTE_ID = DA1.ATTRIBUTE_ID'||
' AND ATTR1.CAL_PERIOD_ID = CP.CAL_PERIOD_ID'||
' AND DA1.ATTRIBUTE_VARCHAR_LABEL = ''CAL_PERIOD_END_DATE'''||
' AND ATTR1.VERSION_ID = AV1.VERSION_ID'||
' AND AV1.DEFAULT_VERSION_FLAG = ''Y''';
l_update_sql VARCHAR2(1000):= 'UPDATE '||gv_dim_props_rec.INTF_ATTRIBUTE_TABLE_NAME||
' SET ATTRIBUTE_ASSIGN_VALUE = NULL,'||
' CALPATTR_CAL_DISPLAY_CODE = :cal_display_code,'||
' CALPATTR_DIMGRP_DISPLAY_CODE = :dim_grp_display_code,'||
' CALPATTR_END_DATE = :calp_end_date,'||
' CALPATTR_PERIOD_NUM = :calp_period_num,'||
' STATUS = ''LOAD'''||
' WHERE ATTRIBUTE_ASSIGN_VALUE = :cal_period_id'||
' AND STATUS = ''UPDATE'' AND CREATED_BY_DIM_MIGRATION_FLAG = ''Y''';
TYPE UPDATE_CALP_CURSOR_TYPE IS REF CURSOR;
update_calp_cur UPDATE_CALP_CURSOR_TYPE;
OPEN update_calp_cur FOR l_calp_intf_attr_sql;
FETCH update_calp_cur INTO l_attr_assign_value;
EXIT WHEN update_calp_cur%NOTFOUND;
EXECUTE IMMEDIATE l_select_sql
INTO l_cal_display_code,
l_dim_grp_display_code,
l_calp_period_num,
l_calp_end_date
USING l_attr_assign_value;
EXECUTE IMMEDIATE l_update_sql
USING l_cal_display_code,
l_dim_grp_display_code,
l_calp_end_date,
l_calp_period_num,
l_attr_assign_value;
l_insert_clause VARCHAR2(100) := 'INSERT INTO '|| gv_dim_props_rec.HIERARCHY_INTF_TABLE_NAME;
l_insert_cols VARCHAR2(500) := '(HIERARCHY_OBJECT_NAME, HIERARCHY_OBJ_DEF_DISPLAY_NAME, DISPLAY_ORDER_NUM, WEIGHTING_PCT, STATUS, LANGUAGE, CREATED_BY_DIM_MIGRATION_FLAG {{dc_insert}} {{vs_insert}} {{calp_insert}})';
l_dc_insert VARCHAR2(100) := ', PARENT_DISPLAY_CODE, CHILD_DISPLAY_CODE';
l_calp_insert VARCHAR2(500) := ', CALENDAR_DISPLAY_CODE, PARENT_DIM_GRP_DISPLAY_CODE, CHILD_DIM_GRP_DISPLAY_CODE, PARENT_CAL_PERIOD_NUMBER, PARENT_CAL_PERIOD_END_DATE, CHILD_CAL_PERIOD_NUMBER, CHILD_CAL_PERIOD_END_DATE';
l_vs_insert VARCHAR2(100) := ', PARENT_VALUE_SET_DISPLAY_CODE, CHILD_VALUE_SET_DISPLAY_CODE';
l_select_clause VARCHAR2(1500) := '(SELECT '''||p_hier_obj_name||''', '''||p_hier_obj_def_name||''','||
' HIER.DISPLAY_ORDER_NUM, HIER.WEIGHTING_PCT, ''LOAD'', '''||USERENV('LANG')||''', ''Y'' {{dc_select}} {{vs_select}} {{calp_select}}';
l_dc_select VARCHAR2(100) := ', B1.'||gv_src_dim_props_rec.MEMBER_DISPLAY_CODE_COL||', B2.'||gv_src_dim_props_rec.MEMBER_DISPLAY_CODE_COL;
l_vs_select VARCHAR2(100) := ', VS1.VALUE_SET_DISPLAY_CODE, VS2.VALUE_SET_DISPLAY_CODE';
l_calp_select VARCHAR2(500) := ', CAL.CALENDAR_DISPLAY_CODE, DG1.DIMENSION_GROUP_DISPLAY_CODE, DG2.DIMENSION_GROUP_DISPLAY_CODE, CA1.NUMBER_ASSIGN_VALUE, CA2.DATE_ASSIGN_VALUE, CA3.NUMBER_ASSIGN_VALUE, CA4.DATE_ASSIGN_VALUE';
l_insert_sql VARCHAR2(32767);
l_insert_cols := REPLACE(l_insert_cols, '{{dc_insert}}', l_dc_insert);
l_insert_cols := REPLACE(l_insert_cols, '{{calp_insert}}', '');
l_select_clause:= REPLACE(l_select_clause, '{{dc_select}}', l_dc_select);
l_select_clause:= REPLACE(l_select_clause, '{{calp_select}}', '');
l_insert_cols := REPLACE(l_insert_cols, '{{calp_insert}}', l_calp_insert);
l_insert_cols := REPLACE(l_insert_cols, '{{dc_insert}}', '');
l_select_clause:= REPLACE(l_select_clause, '{{calp_select}}', l_calp_select);
l_select_clause:= REPLACE(l_select_clause, '{{dc_select}}', '');
l_insert_cols := REPLACE(l_insert_cols, '{{vs_insert}}', l_vs_insert);
l_select_clause:= REPLACE(l_select_clause, '{{vs_select}}', l_vs_select);
l_insert_cols := REPLACE(l_insert_cols, '{{vs_insert}}', '');
l_select_clause:= REPLACE(l_select_clause, '{{vs_select}}', '');
l_insert_sql := l_insert_clause||l_insert_cols||l_select_clause||l_from_clause||l_where_clause;
RETURN l_insert_sql;
l_insert_clause VARCHAR2(100) := 'INSERT INTO FEM_HIERARCHIES_T';
l_select_clause VARCHAR2(1500);
l_insert_sql VARCHAR2(32767);
l_select_clause := '(SELECT '''||p_hier_obj_name||''', '''||l_folder_name||''','||
''''||USERENV('LANG')||''', '''||p_dim_varchar_lbl||''','||
' HIERARCHY_TYPE_CODE, GROUP_SEQUENCE_ENFORCED_CODE, MULTI_TOP_FLAG, MULTI_VALUE_SET_FLAG,'||
' HIERARCHY_USAGE_CODE, FLATTENED_ROWS_FLAG, ''LOAD'', '''||p_hier_obj_def_name||''','||
l_eff_start_date_str||', '||l_eff_end_date_str||', NULL, ''Y''';
l_insert_sql := l_insert_clause||l_select_clause||l_from_clause||l_where_clause;
RETURN l_insert_sql;
l_insert_clause VARCHAR2(100) := 'INSERT INTO FEM_HIER_VALUE_SETS_T';
l_insert_select VARCHAR2(1500) := '(SELECT '''||p_hier_obj_name||''', VS.VALUE_SET_DISPLAY_CODE, '''||USERENV('LANG')||''', ''LOAD'', ''Y''';
l_insert_from VARCHAR2(200) := ' FROM FEM_HIER_VALUE_SETS@'||p_source_db_link||
' HVS, FEM_VALUE_SETS_B@'||p_source_db_link||' VS';
l_insert_where VARCHAR2(500) := ' WHERE HVS.HIERARCHY_OBJ_ID = :hier_obj_id'||
' AND HVS.VALUE_SET_ID = VS.VALUE_SET_ID)';
l_insert_sql VARCHAR2(32767) := l_insert_clause || l_insert_select || l_insert_from || l_insert_where;
RETURN l_insert_sql;
l_insert_clause VARCHAR2(100) := 'INSERT INTO FEM_HIER_DIM_GRPS_T';
l_insert_select VARCHAR2(1500) := '(SELECT '''||p_hier_obj_name||''', '''||USERENV('LANG')||''', ''LOAD'', DG.DIMENSION_GROUP_DISPLAY_CODE, ''Y''';
l_insert_from VARCHAR2(200) := ' FROM FEM_HIER_DIMENSION_GRPS@'||p_source_db_link||
' HDG, FEM_DIMENSION_GRPS_B@'||p_source_db_link||' DG';
l_insert_where VARCHAR2(500) := ' WHERE HDG.HIERARCHY_OBJ_ID = :hier_obj_id'||
' AND HDG.DIMENSION_GROUP_ID = DG.DIMENSION_GROUP_ID)';
l_insert_sql VARCHAR2(32767) := l_insert_clause || l_insert_select || l_insert_from || l_insert_where;
RETURN l_insert_sql;
FUNCTION get_insert_dim_grp_b_sql(p_source_db_link IN VARCHAR2) RETURN VARCHAR2
IS
l_insert_clause VARCHAR2(100) := 'INSERT INTO FEM_DIMENSION_GRPS_B_T';
l_insert_select VARCHAR2(200) := ' (SELECT B.DIMENSION_GROUP_DISPLAY_CODE, D.DIMENSION_VARCHAR_LABEL,'||
'B.DIMENSION_GROUP_SEQ, ''LOAD'', B.TIME_GROUP_TYPE_CODE, ''Y''';
l_insert_from VARCHAR2(200) := ' FROM FEM_DIMENSION_GRPS_B@'||p_source_db_link||
' B, FEM_DIMENSIONS_B@'||p_source_db_link||' D';
l_insert_where VARCHAR2(500) := ' WHERE B.DIMENSION_ID = D.DIMENSION_ID'||
' AND D.DIMENSION_ID = :dimension_id'||
' AND NOT EXISTS (SELECT 1 FROM FEM_DIMENSION_GRPS_B_T'||
' WHERE DIMENSION_GROUP_DISPLAY_CODE = B.DIMENSION_GROUP_DISPLAY_CODE'||
' AND DIMENSION_VARCHAR_LABEL = D.DIMENSION_VARCHAR_LABEL'||
' AND DIMENSION_GROUP_SEQ = B.DIMENSION_GROUP_SEQ))';
l_insert_sql VARCHAR2(32767) := l_insert_clause || l_insert_select || l_insert_from || l_insert_where;
RETURN l_insert_sql;
FUNCTION get_insert_dim_grp_tl_sql(p_source_db_link IN VARCHAR2) RETURN VARCHAR2
IS
l_insert_clause VARCHAR2(100) := 'INSERT INTO FEM_DIMENSION_GRPS_TL_T';
l_insert_select VARCHAR2(200) := ' (SELECT B.DIMENSION_GROUP_DISPLAY_CODE, TL.LANGUAGE,'||
' TL.DIMENSION_GROUP_NAME, TL.DESCRIPTION, ''LOAD'','||
' D.DIMENSION_VARCHAR_LABEL, ''Y''';
l_insert_from VARCHAR2(200) := ' FROM FEM_DIMENSION_GRPS_B@'||p_source_db_link||
' B, FEM_DIMENSION_GRPS_TL@'||p_source_db_link||
' TL, FEM_DIMENSIONS_B@'||p_source_db_link||' D';
l_insert_where VARCHAR2(1000) := ' WHERE B.DIMENSION_GROUP_ID = TL.DIMENSION_GROUP_ID'||
' AND B.DIMENSION_ID = D.DIMENSION_ID'||
-- ' AND B.DIMENSION_ID = TL.DIMENSION_ID'||
' AND TL.DIMENSION_ID = :dimension_id'||
' AND EXISTS (SELECT 1 FROM FND_LANGUAGES L'||
' WHERE TL.LANGUAGE = L.LANGUAGE_CODE AND L.INSTALLED_FLAG IN (''I'',''B''))'||
' AND NOT EXISTS (SELECT 1 FROM FEM_DIMENSION_GRPS_TL_T'||
' WHERE DIMENSION_GROUP_DISPLAY_CODE = B.DIMENSION_GROUP_DISPLAY_CODE'||
' AND DIMENSION_VARCHAR_LABEL = D.DIMENSION_VARCHAR_LABEL'||
' AND LANGUAGE = TL.LANGUAGE'||
' AND DIMENSION_GROUP_NAME = TL.DIMENSION_GROUP_NAME))';
l_insert_sql VARCHAR2(32767) := l_insert_clause || l_insert_select || l_insert_from || l_insert_where;
RETURN l_insert_sql;
PROCEDURE insert_value_sets(p_source_db_link IN VARCHAR2)
IS
l_row_id rowid_type; --ROWID;
'SELECT ROW_ID, FEM_VALUE_SETS_B_S.NEXTVAL,'||
' VALUE_SET_NAME, DESCRIPTION, null,'||
' VALUE_SET_DISPLAY_CODE,'||
' null,'||
' READ_ONLY_FLAG'||
' FROM FEM_VALUE_SETS_VL@'||p_source_db_link||' A'||
' WHERE A.DIMENSION_ID = '||gv_src_dim_props_rec.DIMENSION_ID||
' AND NOT EXISTS (SELECT 1'||
' FROM FEM_VALUE_SETS_VL'||
' WHERE VALUE_SET_DISPLAY_CODE = A.VALUE_SET_DISPLAY_CODE)';
TYPE INSERT_VS_CURSOR_TYPE IS REF CURSOR;
insert_vs_cur INSERT_VS_CURSOR_TYPE;
OPEN insert_vs_cur FOR l_vs_sql;
FETCH insert_vs_cur BULK COLLECT INTO
l_row_id,
l_vs_id,
l_vs_name,
l_vs_desc,
l_default_member_id,
l_vs_dc,
l_default_hier_obj_id,
l_read_only_flag
LIMIT 10000;
SELECT VALUE_SET_NAME
INTO l_dup_vs_name
FROM FEM_VALUE_SETS_VL
WHERE VALUE_SET_NAME = l_vs_name(i);
p_module => c_block||'.insert_value_sets',
p_msg_text => 'Duplicate vs name found in db '|| l_dup_vs_name);
FEM_VALUE_SETS_PKG.INSERT_ROW(X_ROWID => l_row_id(i),
X_VALUE_SET_ID => l_vs_id(i),
X_DEFAULT_LOAD_MEMBER_ID => null,
X_DEFAULT_MEMBER_ID => null,
X_OBJECT_VERSION_NUMBER => 1,
X_DEFAULT_HIERARCHY_OBJ_ID => null,
X_READ_ONLY_FLAG => l_read_only_flag(i),
X_VALUE_SET_DISPLAY_CODE => l_vs_dc(i),
X_DIMENSION_ID => gv_src_dim_props_rec.DIMENSION_ID,
X_VALUE_SET_NAME => l_vs_name(i),
X_DESCRIPTION => l_vs_desc(i),
X_CREATION_DATE => sysdate,
X_CREATED_BY => gv_apps_user_id,
X_LAST_UPDATE_DATE => sysdate,
X_LAST_UPDATED_BY => gv_apps_user_id,
X_LAST_UPDATE_LOGIN => gv_login_id);
PROCEDURE insert_calendars(p_source_db_link IN VARCHAR2)
IS
l_row_id rowid_type;
'SELECT ROW_ID, FEM_CALENDARS_B_S.NEXTVAL,'||
' CALENDAR_NAME, DESCRIPTION, ENABLED_FLAG,'||
' CALENDAR_DISPLAY_CODE,'||
' PERSONAL_FLAG,'||
' READ_ONLY_FLAG'||
' FROM FEM_CALENDARS_VL@'||p_source_db_link||' A'||
' WHERE NOT EXISTS (SELECT 1'||
' FROM FEM_CALENDARS_VL'||
' WHERE CALENDAR_DISPLAY_CODE = A.CALENDAR_DISPLAY_CODE)';
TYPE INSERT_CAL_CURSOR_TYPE IS REF CURSOR;
insert_cal_cur INSERT_CAL_CURSOR_TYPE;
OPEN insert_cal_cur FOR l_cal_sql;
FETCH insert_cal_cur BULK COLLECT INTO
l_row_id,
l_cal_id,
l_cal_name,
l_cal_desc,
l_enabled_flag,
l_cal_dc,
l_personal_flag,
l_read_only_flag
LIMIT 10000;
SELECT CALENDAR_NAME
INTO l_dup_cal_name
FROM FEM_CALENDARS_VL
WHERE CALENDAR_NAME = l_cal_name(i);
FEM_CALENDARS_PKG.INSERT_ROW (
X_ROWID => l_row_id(i),
X_CALENDAR_ID => l_cal_id(i),
X_READ_ONLY_FLAG => l_read_only_flag(i),
X_PERSONAL_FLAG => l_personal_flag(i),
X_ENABLED_FLAG => l_enabled_flag(i),
X_CALENDAR_DISPLAY_CODE => l_cal_dc(i),
X_OBJECT_VERSION_NUMBER => 1,
X_CALENDAR_NAME => l_cal_name(i),
X_DESCRIPTION => l_cal_desc(i),
X_CREATION_DATE => sysdate,
X_CREATED_BY => gv_apps_user_id,
X_LAST_UPDATE_DATE => sysdate,
X_LAST_UPDATED_BY => gv_apps_user_id,
X_LAST_UPDATE_LOGIN => gv_login_id);
P_LAST_UPDATE_LOGIN => gv_login_id,
P_PROGRAM_ID => gv_pgm_id,
P_PROGRAM_LOGIN_ID => gv_login_id,
P_PROGRAM_APPLICATION_ID => gv_pgm_app_id,
P_EXEC_MODE_CODE => p_execution_mode,
P_DIMENSION_ID => null,
P_TABLE_NAME => null,
P_HIERARCHY_NAME => null,
X_MSG_COUNT => v_msg_count,
X_MSG_DATA => v_msg_data,
X_RETURN_STATUS => v_API_return_status);
P_LAST_UPDATE_LOGIN => gv_login_id,
P_EXEC_MODE_CODE => p_execution_mode,
X_EXEC_STATE => v_exec_state,
X_PREV_REQUEST_ID => v_previous_request_id,
X_MSG_COUNT => v_msg_count,
X_MSG_DATA => v_msg_data,
X_RETURN_STATUS => v_API_return_status);
P_LAST_UPDATE_LOGIN => gv_login_id,
X_MSG_COUNT => v_msg_count,
X_MSG_DATA => v_msg_data,
X_RETURN_STATUS => v_API_return_status);
l_delete_b_sql VARCHAR2(200);
l_delete_tl_sql VARCHAR2(200);
l_delete_attr_sql VARCHAR2(200);
l_delete_dg_b_sql VARCHAR2(200);
l_delete_dg_tl_sql VARCHAR2(200);
l_delete_b_sql := 'DELETE FROM '||gv_dim_props_rec.INTF_MEMBER_B_TABLE_NAME||
' WHERE CREATED_BY_DIM_MIGRATION_FLAG = ''Y''';
l_delete_tl_sql := 'DELETE FROM '||gv_dim_props_rec.INTF_MEMBER_TL_TABLE_NAME||
' WHERE CREATED_BY_DIM_MIGRATION_FLAG = ''Y''';
l_delete_attr_sql := 'DELETE FROM '||gv_dim_props_rec.INTF_ATTRIBUTE_TABLE_NAME||
' WHERE CREATED_BY_DIM_MIGRATION_FLAG = ''Y''';
l_delete_dg_b_sql := 'DELETE FROM FEM_DIMENSION_GRPS_B_T'||
' WHERE DIMENSION_VARCHAR_LABEL = :dim_varchar_lbl AND CREATED_BY_DIM_MIGRATION_FLAG = ''Y''';
l_delete_dg_tl_sql := 'DELETE FROM FEM_DIMENSION_GRPS_TL_T'||
' WHERE DIMENSION_VARCHAR_LABEL = :dim_varchar_lbl AND CREATED_BY_DIM_MIGRATION_FLAG = ''Y''';
p_module => c_block||'.l_delete_b_sql',
p_msg_text => l_delete_b_sql);
EXECUTE IMMEDIATE l_delete_b_sql;
p_module => c_block||'.l_delete_tl_sql',
p_msg_text => l_delete_tl_sql);
EXECUTE IMMEDIATE l_delete_tl_sql;
p_module => c_block||'.l_delete_attr_sql',
p_msg_text => l_delete_attr_sql);
EXECUTE IMMEDIATE l_delete_attr_sql;
p_module => c_block||'.l_delete_dg_b_sql',
p_msg_text => l_delete_dg_b_sql);
EXECUTE IMMEDIATE l_delete_dg_b_sql USING p_dim_varchar_lbl;
p_module => c_block||'.l_delete_dg_tl_sql',
p_msg_text => l_delete_dg_tl_sql);
EXECUTE IMMEDIATE l_delete_dg_tl_sql USING p_dim_varchar_lbl;
l_insert_b_sql VARCHAR2(32767);
l_insert_tl_sql VARCHAR2(32767);
l_insert_attr_sql VARCHAR2(32767);
l_insert_dim_grp_b_sql VARCHAR2(32767);
l_insert_dim_grp_tl_sql VARCHAR2(32767);
l_insert_b_sql := get_insert_b_sql(p_source_db_link, p_dim_varchar_lbl);
p_module => c_block||'.l_insert_b_sql',
p_msg_text => l_insert_b_sql);
l_insert_tl_sql := get_insert_tl_sql(p_source_db_link, p_dim_varchar_lbl);
p_module => c_block||'.l_insert_tl_sql',
p_msg_text => l_insert_tl_sql);
l_insert_attr_sql := get_dim_attr_sql(p_version_mode, p_source_db_link, p_dim_varchar_lbl);
p_module => c_block||'.l_insert_attr_sql',
p_msg_text => l_insert_attr_sql);
l_insert_dim_grp_b_sql := get_insert_dim_grp_b_sql(p_source_db_link);
p_module => c_block||'.l_insert_dim_grp_b_sql',
p_msg_text => l_insert_dim_grp_b_sql);
l_insert_dim_grp_tl_sql := get_insert_dim_grp_tl_sql(p_source_db_link);
p_module => c_block||'.l_insert_dim_grp_tl_sql',
p_msg_text => l_insert_dim_grp_tl_sql);
insert_value_sets(p_source_db_link);
insert_calendars(p_source_db_link);
EXECUTE IMMEDIATE l_insert_dim_grp_b_sql USING gv_src_dim_props_rec.DIMENSION_ID;
EXECUTE IMMEDIATE l_insert_dim_grp_tl_sql USING gv_src_dim_props_rec.DIMENSION_ID;
P_ENG_SQL => l_insert_b_sql,
P_TABLE_ALIAS => 'B',
P_RUN_NAME => 'PROCESS MEMBERS B',
P_ENG_PRG => 'FEM_DIM_MEMBER_MIGRATION_PKG.PROCESS_MEMBERS',
P_CONDITION => NULL,
P_FAILED_REQ_ID => NULL
,P_SOURCE_DB_LINK => p_source_db_link
);
RAISE e_insert_b_exception;
P_ENG_SQL => l_insert_tl_sql,
P_TABLE_ALIAS => 'TL',
P_RUN_NAME => 'PROCESS MEMBERS TL',
P_ENG_PRG => 'FEM_DIM_MEMBER_MIGRATION_PKG.PROCESS_MEMBERS',
P_CONDITION => NULL,
P_FAILED_REQ_ID => NULL,
P_SOURCE_DB_LINK => p_source_db_link
);
RAISE e_insert_tl_exception;
P_ENG_SQL => l_insert_attr_sql,
P_TABLE_ALIAS => 'ATTR',
P_RUN_NAME => 'PROCESS MEMBERS ATTR',
P_ENG_PRG => 'FEM_DIM_MEMBER_MIGRATION_PKG.PROCESS_MEMBERS',
P_CONDITION => NULL,
P_FAILED_REQ_ID => NULL,
P_SOURCE_DB_LINK => p_source_db_link
);
RAISE e_insert_attr_exception;
update_calp_attributes(p_source_db_link);
WHEN e_insert_b_exception THEN
FEM_ENGINES_PKG.TECH_MESSAGE
(p_severity => c_log_level_5
,p_module => c_block||'.'||c_proc_name||'.Exception'
,p_app_name => c_fem
,p_msg_name => G_INSERT_ERROR
,P_TOKEN1 => 'TABLE_NAME'
,P_VALUE1 => gv_dim_props_rec.INTF_MEMBER_B_TABLE_NAME);
,p_msg_name => G_INSERT_ERROR
,P_TOKEN1 => 'TABLE_NAME'
,P_VALUE1 => gv_dim_props_rec.INTF_MEMBER_B_TABLE_NAME);
WHEN e_insert_tl_exception THEN
FEM_ENGINES_PKG.TECH_MESSAGE
(p_severity => c_log_level_5
,p_module => c_block||'.'||c_proc_name||'.Exception'
,p_app_name => c_fem
,p_msg_name => G_INSERT_ERROR
,P_TOKEN1 => 'TABLE_NAME'
,P_VALUE1 => gv_dim_props_rec.INTF_MEMBER_TL_TABLE_NAME);
,p_msg_name => G_INSERT_ERROR
,P_TOKEN1 => 'TABLE_NAME'
,P_VALUE1 => gv_dim_props_rec.INTF_MEMBER_TL_TABLE_NAME);
WHEN e_insert_attr_exception THEN
FEM_ENGINES_PKG.TECH_MESSAGE
(p_severity => c_log_level_5
,p_module => c_block||'.'||c_proc_name||'.Exception'
,p_app_name => c_fem
,p_msg_name => G_INSERT_ERROR
,P_TOKEN1 => 'TABLE_NAME'
,P_VALUE1 => gv_dim_props_rec.INTF_ATTRIBUTE_TABLE_NAME);
,p_msg_name => G_INSERT_ERROR
,P_TOKEN1 => 'TABLE_NAME'
,P_VALUE1 => gv_dim_props_rec.INTF_ATTRIBUTE_TABLE_NAME);
l_delete_b_sql VARCHAR2(200);
l_delete_tl_sql VARCHAR2(200);
l_delete_attr_sql VARCHAR2(200);
l_delete_dg_b_sql VARCHAR2(200);
l_delete_dg_tl_sql VARCHAR2(200);
l_delete_hier_rule_sql VARCHAR2(200);
l_delete_hier_sql VARCHAR2(200);
l_delete_hier_vs_sql VARCHAR2(200);
l_delete_hier_dg_sql VARCHAR2(200);
l_hier_rule_sql VARCHAR2(1000):= 'SELECT A.OBJECT_ID, B.FOLDER_NAME'||
' FROM FEM_OBJECT_CATALOG_VL@'||p_source_db_link||' A,'||
' FEM_FOLDERS_VL@'||p_source_db_link||' B'||
' WHERE A.OBJECT_TYPE_CODE = ''HIERARCHY'''||
' AND A.FOLDER_ID = B.FOLDER_ID'||
' AND A.OBJECT_NAME = :hier_obj_name';
l_delete_hier_rule_sql := 'DELETE FROM FEM_HIERARCHIES_T'||
' WHERE HIERARCHY_OBJECT_NAME = :hier_obj_name AND CREATED_BY_DIM_MIGRATION_FLAG = ''Y''';
l_delete_hier_sql := 'DELETE FROM '||gv_dim_props_rec.HIERARCHY_INTF_TABLE_NAME||
' WHERE HIERARCHY_OBJECT_NAME = :hier_obj_name AND CREATED_BY_DIM_MIGRATION_FLAG = ''Y''';
l_delete_hier_vs_sql := 'DELETE FROM FEM_HIER_VALUE_SETS_T'||
' WHERE HIERARCHY_OBJECT_NAME = :hier_obj_name AND CREATED_BY_DIM_MIGRATION_FLAG = ''Y''';
l_delete_hier_dg_sql := 'DELETE FROM FEM_HIER_DIM_GRPS_T'||
' WHERE HIERARCHY_OBJECT_NAME = :hier_obj_name AND CREATED_BY_DIM_MIGRATION_FLAG = ''Y''';
EXECUTE IMMEDIATE l_delete_hier_rule_sql USING p_hier_obj_name;
EXECUTE IMMEDIATE l_delete_hier_sql USING p_hier_obj_name;
EXECUTE IMMEDIATE l_delete_hier_vs_sql USING p_hier_obj_name;
EXECUTE IMMEDIATE l_delete_hier_dg_sql USING p_hier_obj_name;
l_insert_hier_sql VARCHAR2(32767);
l_insert_hier_rule_sql VARCHAR2(32767);
l_insert_hier_vs_sql VARCHAR2(32767);
l_insert_hier_dg_sql VARCHAR2(32767);
l_hier_rule_sql VARCHAR2(1000):= 'SELECT A.OBJECT_ID'||
' FROM FEM_OBJECT_CATALOG_VL@'||p_source_db_link||' A'||
' WHERE A.OBJECT_TYPE_CODE = ''HIERARCHY'''||
' AND A.OBJECT_NAME = :hier_obj_name';
l_hier_version_sql VARCHAR2(1000):= 'SELECT B.OBJECT_DEFINITION_ID,'||
' B.DISPLAY_NAME,'||
' B.EFFECTIVE_START_DATE,'||
' B.EFFECTIVE_END_DATE'||
' FROM FEM_OBJECT_DEFINITION_VL@'||p_source_db_link||' B'||
' WHERE B.OBJECT_ID = :hier_obj_id'||'{{version_where}}';
SELECT OBJECT_ID
INTO l_target_obj_id
FROM FEM_OBJECT_CATALOG_VL
WHERE OBJECT_NAME = p_hier_obj_name;
l_insert_hier_rule_sql := get_dim_hier_rule_sql(p_dim_varchar_lbl,
p_folder_name,
p_hier_obj_name,
p_hier_obj_def_name,
p_source_db_link,
l_eff_start_date,
l_eff_end_date);
l_insert_hier_sql := get_dim_hier_sql(p_hier_obj_name,
p_hier_obj_def_name,
l_hier_obj_def_id,
p_dim_varchar_lbl,
p_source_db_link);
p_module => c_block||'.l_insert_hier_rule_sql',
p_msg_text => l_insert_hier_rule_sql);
EXECUTE IMMEDIATE l_insert_hier_rule_sql USING p_hier_obj_id;
P_ENG_SQL => l_insert_hier_sql,
P_TABLE_ALIAS => 'HIER',
P_RUN_NAME => 'PROCESS MEMBERS HIER',
P_ENG_PRG => 'FEM_DIM_MEMBER_MIGRATION_PKG.PROCESS_MEMBERS',
P_CONDITION => NULL,
P_FAILED_REQ_ID => NULL,
P_SOURCE_DB_LINK => p_source_db_link);
l_insert_hier_rule_sql := get_dim_hier_rule_sql(p_dim_varchar_lbl,
p_folder_name,
p_hier_obj_name,
l_hier_obj_def_name,
p_source_db_link,
l_eff_start_date,
l_eff_end_date);
l_insert_hier_sql := get_dim_hier_sql(p_hier_obj_name,
l_hier_obj_def_name,
l_hier_obj_def_id,
p_dim_varchar_lbl,
p_source_db_link);
p_module => c_block||'.l_insert_hier_rule_sql',
p_msg_text => l_insert_hier_rule_sql);
EXECUTE IMMEDIATE l_insert_hier_rule_sql USING p_hier_obj_id;
p_module => c_block||'.l_insert_hier_sql',
p_msg_text => l_insert_hier_sql);
P_ENG_SQL => l_insert_hier_sql,
P_TABLE_ALIAS => 'HIER',
P_RUN_NAME => 'PROCESS MEMBERS HIER',
P_ENG_PRG => 'FEM_DIM_MEMBER_MIGRATION_PKG.PROCESS_MEMBERS',
P_CONDITION => NULL,
P_FAILED_REQ_ID => NULL
,P_SOURCE_DB_LINK => p_source_db_link
);
RAISE e_insert_hier_exception;
l_insert_hier_vs_sql := get_hier_vs_sql(p_hier_obj_name,
p_source_db_link);
p_module => c_block||'.l_insert_hier_vs_sql',
p_msg_text => l_insert_hier_vs_sql);
l_insert_hier_dg_sql := get_hier_dg_sql(p_hier_obj_name, p_source_db_link);
p_module => c_block||'.l_insert_hier_dg_sql',
p_msg_text => l_insert_hier_dg_sql);
EXECUTE IMMEDIATE l_insert_hier_vs_sql USING p_hier_obj_id;
EXECUTE IMMEDIATE l_insert_hier_dg_sql USING p_hier_obj_id;
WHEN e_insert_hier_exception THEN
FEM_ENGINES_PKG.TECH_MESSAGE
(p_severity => c_log_level_5
,p_module => c_block||'.'||c_proc_name||'.Exception'
,p_app_name => c_fem
,p_msg_name => G_INSERT_ERROR
,P_TOKEN1 => 'TABLE_NAME'
,P_VALUE1 => gv_dim_props_rec.HIERARCHY_INTF_TABLE_NAME);
,p_msg_name => G_INSERT_ERROR
,P_TOKEN1 => 'TABLE_NAME'
,P_VALUE1 => gv_dim_props_rec.HIERARCHY_INTF_TABLE_NAME);
/*FEM_PL_PKG.Update_Obj_Exec_Errors(
P_API_VERSION => c_api_version,
P_COMMIT => c_true,
P_REQUEST_ID => gv_request_id,
P_OBJECT_ID => gv_dim_props_rec.MIGRATION_OBJ_ID,
P_USER_ID => gv_apps_user_id,
P_LAST_UPDATE_LOGIN => null,
X_MSG_COUNT => v_msg_count,
X_MSG_DATA => v_msg_data,
X_RETURN_STATUS => v_API_return_status);
FEM_PL_PKG.Update_Obj_Exec_Status(
P_API_VERSION => c_api_version,
P_COMMIT => c_true,
P_REQUEST_ID => gv_request_id,
P_OBJECT_ID => gv_dim_props_rec.MIGRATION_OBJ_ID,
P_EXEC_STATUS_CODE => p_execution_status,
P_USER_ID => gv_apps_user_id,
P_LAST_UPDATE_LOGIN => null,
X_MSG_COUNT => v_msg_count,
X_MSG_DATA => v_msg_data,
X_RETURN_STATUS => v_API_return_status);
FEM_PL_PKG.Update_Request_Status(
P_API_VERSION => c_api_version,
P_COMMIT => c_true,
P_REQUEST_ID => gv_request_id,
P_EXEC_STATUS_CODE => p_execution_status,
P_USER_ID => gv_apps_user_id,
P_LAST_UPDATE_LOGIN => null,
X_MSG_COUNT => v_msg_count,
X_MSG_DATA => v_msg_data,
X_RETURN_STATUS => v_API_return_status);
/*FEM_PL_PKG.Update_Obj_Exec_Errors(
P_API_VERSION => c_api_version,
P_COMMIT => c_true,
P_REQUEST_ID => gv_request_id,
P_OBJECT_ID => gv_dim_props_rec.MIGRATION_OBJ_ID,
P_USER_ID => gv_apps_user_id,
P_LAST_UPDATE_LOGIN => null,
X_MSG_COUNT => v_msg_count,
X_MSG_DATA => v_msg_data,
X_RETURN_STATUS => v_API_return_status);
FEM_PL_PKG.Update_Obj_Exec_Status(
P_API_VERSION => c_api_version,
P_COMMIT => c_true,
P_REQUEST_ID => gv_request_id,
P_OBJECT_ID => gv_dim_props_rec.MIGRATION_OBJ_ID,
P_EXEC_STATUS_CODE => p_execution_status,
P_USER_ID => gv_apps_user_id,
P_LAST_UPDATE_LOGIN => null,
X_MSG_COUNT => v_msg_count,
X_MSG_DATA => v_msg_data,
X_RETURN_STATUS => v_API_return_status);
FEM_PL_PKG.Update_Request_Status(
P_API_VERSION => c_api_version,
P_COMMIT => c_true,
P_REQUEST_ID => gv_request_id,
P_EXEC_STATUS_CODE => p_execution_status,
P_USER_ID => gv_apps_user_id,
P_LAST_UPDATE_LOGIN => null,
X_MSG_COUNT => v_msg_count,
X_MSG_DATA => v_msg_data,
X_RETURN_STATUS => v_API_return_status);