[Home] [Help]
84: ,p_count IN NUMBER
85: ) IS
86: -- PRAGMA AUTONOMOUS_TRANSACTION;
87:
88: l_rec ego_itm_usr_attr_intrfc%ROWTYPE;
89: l_dummy_number NUMBER;
90: BEGIN
91: NULL;
92: /***
91: NULL;
92: /***
93: SELECT count(*)
94: INTO l_dummy_number
95: FROM ego_itm_usr_attr_intrfc
96: WHERE data_set_id = p_data_set_id;
97: code_debug(p_log_level => 0
98: ,p_module => 'write_intf_records'
99: ,p_message => p_count||' - No records in intf table '||l_dummy_number
105: ' inventory_item_id, organization_id, data_level_id, revision_id, pk1_value, pk2_value, '||
106: ' attr_group_id, attr_group_int_name, attr_int_name, attr_value_str, attr_value_num, '||
107: ' row_identifier');
108: IF p_count < 100 THEN
109: FOR cr in (SELECT * FROM ego_itm_usr_attr_intrfc
110: WHERE data_set_id = p_data_set_id
111: ORDER BY inventory_item_id, organization_id, data_level_id,
112: revision_id, pk1_value, pk2_value, attr_group_id,
113: attr_int_name, row_identifier
2950: ' SET UAI1.PROCESS_STATUS = UAI1.PROCESS_STATUS + '||G_PS_OTHER_ATTRS_INVALID||
2951: ' WHERE UAI1.DATA_SET_ID = :data_set_id '||
2952: ' AND BITAND(PROCESS_STATUS,'||G_PS_OTHER_ATTRS_INVALID||') = 0'||
2953: ' AND (UAI1.ROW_IDENTIFIER, UAI1.ATTR_GROUP_INT_NAME) IN '||
2954: ' (SELECT /*+ UNNEST CARDINALITY(UAI2,10) INDEX(UAI2,EGO_ITM_USR_ATTR_INTRFC_N3) */ '|| /* Bug 9678667 */
2955: ' UAI2.ROW_IDENTIFIER, UAI2.ATTR_GROUP_INT_NAME '||
2956: ' FROM '||p_interface_table_name||' UAI2'||
2957: ' WHERE UAI2.DATA_SET_ID = :data_set_id '||
2958: ' AND UAI2.PROCESS_STATUS >= '||G_PS_BAD_ATTR_OR_AG_METADATA ||
2966: -- ERRORING OUT OF FAILED ROWS --
2967: --=============================--
2968:
2969: OPEN l_dynamic_dist_ag_cursor FOR
2970: ' SELECT /*+ use_concat index(UAI1,EGO_ITM_USR_ATTR_INTRFC_N3) */ /* Bug 9678667 */
2971: DISTINCT ATTR_GROUP_INT_NAME
2972: FROM '||p_interface_table_name||' UAI1
2973: WHERE DATA_SET_ID = :data_set_id
2974: AND (UAI1.PROCESS_STATUS < '||G_PS_IN_PROCESS||' OR UAI1.PROCESS_STATUS > '||G_PS_IN_PROCESS||')' /* Bug 9678667 */
3013: -- MARKING ALL THE ROWS AS 3 WHICH HAVE ERRORED --
3014: --------------------------------------------------
3015: --considering the G_PS_BAD_ATTR_OR_AG_METADATA is the starting point for the intermittent errors.
3016: l_dynamic_sql :=
3017: 'UPDATE /*+ INDEX(UAI1,EGO_ITM_USR_ATTR_INTRFC_N3) */ '||p_interface_table_name||' UAI1 '||
3018: /* Bug 9678667 */
3019: ' SET UAI1.PROCESS_STATUS = '||G_PS_GENERIC_ERROR||
3020: ' WHERE UAI1.DATA_SET_ID = :data_set_id '||--p_data_set_id||
3021: ' AND UAI1.ROW_IDENTIFIER IN '||
3247: AND UAI1.PROCESS_STATUS = '||G_PS_IN_PROCESS||'
3248: AND UAI1.ROW_IDENTIFIER IN
3249: (
3250: /* Fix for bug#9678667 - added below hint */
3251: SELECT /*+ index(UAI2,EGO_ITM_USR_ATTR_INTRFC_N1) */
3252: DISTINCT UAI2.ROW_IDENTIFIER
3253: FROM '||p_interface_table_name||' UAI2
3254: WHERE UAI2.DATA_SET_ID = :p_data_set_id
3255: AND UAI2.PROCESS_STATUS = '||G_PS_IN_PROCESS||'
3289: AND UAI1.PROCESS_STATUS = '||G_PS_IN_PROCESS||'
3290: AND UAI1.ROW_IDENTIFIER IN
3291: (
3292: /* Fix for bug#9678667 - added below hint */
3293: SELECT /*+ index(UAI2,EGO_ITM_USR_ATTR_INTRFC_N1) */
3294: DISTINCT UAI2.ROW_IDENTIFIER
3295: FROM '||p_interface_table_name||' UAI2
3296: WHERE UAI2.DATA_SET_ID = :p_data_set_id
3297: AND UAI2.PROCESS_STATUS = '||G_PS_IN_PROCESS||'
3376: G_NULL_NUM_VAL_STR , G_NULL_NUM_VAL, G_NULL_DATE_VAL,l_null_date_time_value,l_null_date_value,G_NULL_CHAR_VAL;
3377:
3378: ELSE
3379: /* Fix for bug#9678667 - Added below hint */
3380: l_dynamic_sql := l_dynamic_sql ||' /*+ index(EGO_ITM_USR_ATTR_INTRFC, EGO_ITM_USR_ATTR_INTRFC_N1) */ ' ||p_interface_table_name||
3381: ' SET '||' ATTR_VALUE_STR = NULL '||
3382: ' , ATTR_DISP_VALUE = NULL '||
3383: ' WHERE DATA_SET_ID = :data_set_id '||
3384: ' AND PROCESS_STATUS = '||G_PS_IN_PROCESS||' '||
3816:
3817: l_nvs_char_cursor_id := DBMS_SQL.Open_Cursor;
3818: /* Fix for bug#9678667 : Added the below hint */
3819: l_dynamic_sql :=
3820: 'UPDATE /*+ index(EGO_ITM_USR_ATTR_INTRFC, EGO_ITM_USR_ATTR_INTRFC_N1) */ '||p_interface_table_name||'
3821: SET ATTR_VALUE_STR = ATTR_DISP_VALUE
3822: WHERE DATA_SET_ID = :data_set_id
3823: AND (PROCESS_STATUS = '||G_PS_IN_PROCESS||' OR PROCESS_STATUS > '||G_PS_BAD_ATTR_OR_AG_METADATA||' )
3824: AND BITAND(PROCESS_STATUS, '||G_PS_NO_PRIVILEGES||') = 0
3973: IF (l_colcheck_char_cursor_id IS NULL) THEN
3974: l_colcheck_char_cursor_id := DBMS_SQL.Open_Cursor;
3975: /* Fix for bug#9678667 - Added below hint */
3976: l_dynamic_sql :=
3977: 'UPDATE /*+ index(EGO_ITM_USR_ATTR_INTRFC, EGO_ITM_USR_ATTR_INTRFC_N1) NO_EXPAND */ '||p_interface_table_name||'
3978: SET PROCESS_STATUS = PROCESS_STATUS + '||G_PS_DATA_IN_WRONG_COL||'
3979: WHERE DATA_SET_ID = :data_set_id
3980: AND (PROCESS_STATUS = '||G_PS_IN_PROCESS||' OR PROCESS_STATUS > '||G_PS_BAD_ATTR_OR_AG_METADATA||' )
3981: AND BITAND(PROCESS_STATUS, '||G_PS_NO_PRIVILEGES||') = 0
4101: ' SET UAI1.PROCESS_STATUS = UAI1.PROCESS_STATUS + '||G_PS_OTHER_ATTRS_INVALID||
4102: ' WHERE UAI1.DATA_SET_ID = :data_set_id '||
4103: ' AND BITAND(PROCESS_STATUS,'||G_PS_OTHER_ATTRS_INVALID||') = 0'||
4104: ' AND (UAI1.ROW_IDENTIFIER, UAI1.ATTR_GROUP_INT_NAME) IN '||
4105: ' (SELECT /*+ UNNEST CARDINALITY(UAI2,10) INDEX(UAI2,EGO_ITM_USR_ATTR_INTRFC_N3) */ '|| /* Bug 9678667 */
4106: ' UAI2.ROW_IDENTIFIER, UAI2.ATTR_GROUP_INT_NAME '||
4107: ' FROM '||p_interface_table_name||' UAI2'||
4108: ' WHERE UAI2.DATA_SET_ID = :data_set_id '||
4109: ' AND UAI2.PROCESS_STATUS >= '||G_PS_BAD_ATTR_OR_AG_METADATA ||
5070: -- Here we error out the MR AG rows which have
5071: -- a wrong transaction type (UPDATE, CREATE)
5072: ------------------------------------------------
5073: l_dynamic_sql :=
5074: ' UPDATE /*+ INDEX(UAI1,EGO_ITM_USR_ATTR_INTRFC_N3) */ /* Bug 9678667 */ '||p_interface_table_name||' UAI1
5075: SET UAI1.PROCESS_STATUS = PROCESS_STATUS +
5076: DECODE(UAI1.TRANSACTION_TYPE,
5077: '''||EGO_USER_ATTRS_DATA_PVT.G_CREATE_MODE||''', '||G_PS_BAD_TTYPE_CREATE||',
5078: '''||EGO_USER_ATTRS_DATA_PVT.G_UPDATE_MODE||''', '||G_PS_BAD_TTYPE_UPDATE||',
5214: FND_GLOBAL.USER_ID,
5215: SYSDATE,
5216: FND_GLOBAL.USER_ID,
5217: SYSDATE' || l_extra_column_val || '
5218: FROM (SELECT /*+ NO_MERGE index(A,EGO_ITM_USR_ATTR_INTRFC_N1) */
5219: MAX(TRANSACTION_ID) TRANSACTION_ID,
5220: DATA_SET_ID,
5221: ROW_IDENTIFIER,
5222: ATTR_GROUP_INT_NAME,
5236: ATTR_GROUP_ID
5237: ) A,
5238: FND_DESCR_FLEX_COLUMN_USAGES FL_COL,
5239: EGO_FND_DF_COL_USGS_EXT ATTR_EXT
5240: WHERE NOT EXISTS (SELECT /*+ no_unnest index(B,EGO_ITM_USR_ATTR_INTRFC_U1) */ NULL
5241: FROM '||p_interface_table_name||' B
5242: WHERE DATA_SET_ID = :data_set_id
5243: AND B.ATTR_INT_NAME = FL_COL.END_USER_COLUMN_NAME
5244: AND A.ROW_IDENTIFIER = B.ROW_IDENTIFIER
5296: ATTR_INT_NAME ,
5297: ATTR_VALUE_NUM ,
5298: TRANSACTION_TYPE ,'||l_concat_pk_cols_sel||'
5299: ATTR_GROUP_ID,CREATED_BY,CREATION_DATE,LAST_UPDATED_BY,LAST_UPDATE_DATE)
5300: SELECT /*+ index(A,EGO_ITM_USR_ATTR_INTRFC_N1) */ /* Fix for bug#9678667 */
5301: /* Bug 9678667 MAX(TRANSACTION_ID),'||G_PS_IN_PROCESS||',DATA_SET_ID,ROW_IDENTIFIER,:attr_group_int_name,:attr_internal_name,
5302: :default_value,'''|| EGO_USER_ATTRS_DATA_PVT.G_CREATE_MODE||''','|| l_concat_pk_cols_sel ||'
5303: ATTR_GROUP_ID,MAX(CREATED_BY),SYSDATE,MAX(LAST_UPDATED_BY),SYSDATE
5304: FROM '||p_interface_table_name||' A
5302: :default_value,'''|| EGO_USER_ATTRS_DATA_PVT.G_CREATE_MODE||''','|| l_concat_pk_cols_sel ||'
5303: ATTR_GROUP_ID,MAX(CREATED_BY),SYSDATE,MAX(LAST_UPDATED_BY),SYSDATE
5304: FROM '||p_interface_table_name||' A
5305: WHERE NOT EXISTS (
5306: SELECT /*+ no_unnest index(B,EGO_ITM_USR_ATTR_INTRFC_U1) */ /* Fix for bug#9678667 */
5307: /* Bug 9678667 NULL
5308: FROM '||p_interface_table_name||' B
5309: WHERE DATA_SET_ID = A.DATA_SET_ID
5310: AND B.ATTR_INT_NAME = :attr_internal_name
5348: ATTR_INT_NAME ,
5349: ATTR_VALUE_DATE ,
5350: TRANSACTION_TYPE ,'||l_concat_pk_cols_sel||'
5351: ATTR_GROUP_ID,CREATED_BY,CREATION_DATE,LAST_UPDATED_BY,LAST_UPDATE_DATE)
5352: SELECT /*+ index(A,EGO_ITM_USR_ATTR_INTRFC_N1) */ /* Fix for bug#9678667 */
5353: /* Bug 9678667 MAX(TRANSACTION_ID),'||G_PS_IN_PROCESS||',DATA_SET_ID,ROW_IDENTIFIER,:attr_group_int_name,:attr_internal_name,
5354: :default_value,'''|| EGO_USER_ATTRS_DATA_PVT.G_CREATE_MODE||''','|| l_concat_pk_cols_sel ||'
5355: ATTR_GROUP_ID,MAX(CREATED_BY),SYSDATE,MAX(LAST_UPDATED_BY),SYSDATE
5356: FROM '||p_interface_table_name||' A
5354: :default_value,'''|| EGO_USER_ATTRS_DATA_PVT.G_CREATE_MODE||''','|| l_concat_pk_cols_sel ||'
5355: ATTR_GROUP_ID,MAX(CREATED_BY),SYSDATE,MAX(LAST_UPDATED_BY),SYSDATE
5356: FROM '||p_interface_table_name||' A
5357: WHERE NOT EXISTS (
5358: SELECT /*+ no_unnest index(B,EGO_ITM_USR_ATTR_INTRFC_U1) */ /* Fix for bug#9678667 */
5359: /* Bug 9678667 NULL
5360: FROM '||p_interface_table_name||' B
5361: WHERE DATA_SET_ID = A.DATA_SET_ID
5362: AND B.ATTR_INT_NAME = :attr_internal_name
5401: ATTR_INT_NAME ,
5402: ATTR_VALUE_STR ,
5403: TRANSACTION_TYPE ,'||l_concat_pk_cols_sel||'
5404: ATTR_GROUP_ID,CREATED_BY,CREATION_DATE,LAST_UPDATED_BY,LAST_UPDATE_DATE)
5405: SELECT /*+ index(A,EGO_ITM_USR_ATTR_INTRFC_N1) */ /* Fix for bug#9678667 */
5406: /* Bug 9678667 MAX(TRANSACTION_ID),'||G_PS_IN_PROCESS||',DATA_SET_ID,ROW_IDENTIFIER,:attr_group_int_name,:attr_internal_name,
5407: :default_value,'''|| EGO_USER_ATTRS_DATA_PVT.G_CREATE_MODE||''','|| l_concat_pk_cols_sel ||'
5408: ATTR_GROUP_ID,MAX(CREATED_BY),SYSDATE,MAX(LAST_UPDATED_BY),SYSDATE
5409: FROM '||p_interface_table_name||' A
5407: :default_value,'''|| EGO_USER_ATTRS_DATA_PVT.G_CREATE_MODE||''','|| l_concat_pk_cols_sel ||'
5408: ATTR_GROUP_ID,MAX(CREATED_BY),SYSDATE,MAX(LAST_UPDATED_BY),SYSDATE
5409: FROM '||p_interface_table_name||' A
5410: WHERE NOT EXISTS (
5411: SELECT /*+ no_unnest index(B,EGO_ITM_USR_ATTR_INTRFC_U1) */ /* Fix for bug#9678667 */
5412: /* Bug 9678667 NULL
5413: FROM '||p_interface_table_name||' B
5414: WHERE DATA_SET_ID = A.DATA_SET_ID
5415: AND B.ATTR_INT_NAME = :attr_internal_name
7731: ' SET UAI1.PROCESS_STATUS = UAI1.PROCESS_STATUS + '||G_PS_OTHER_ATTRS_INVALID||
7732: ' WHERE UAI1.DATA_SET_ID = :data_set_id '||
7733: ' AND BITAND(PROCESS_STATUS,'||G_PS_OTHER_ATTRS_INVALID||') = 0'||
7734: ' AND (UAI1.ROW_IDENTIFIER, UAI1.ATTR_GROUP_INT_NAME) IN '||
7735: ' (SELECT /*+ UNNEST CARDINALITY(UAI2,10) INDEX(UAI2,EGO_ITM_USR_ATTR_INTRFC_N3) */ '|| /* Bug 9678667 */
7736: ' UAI2.ROW_IDENTIFIER, UAI2.ATTR_GROUP_INT_NAME '||
7737: ' FROM '||p_interface_table_name||' UAI2'||
7738: ' WHERE UAI2.DATA_SET_ID = :data_set_id '||
7739: ' AND UAI2.PROCESS_STATUS >= '||G_PS_BAD_ATTR_OR_AG_METADATA ||
8354: l_dynamic_sql := ' UPDATE '||l_ext_b_table_name||'
8355: SET REQUEST_ID = :REQUEST_ID
8356: WHERE ATTR_GROUP_ID = :atr_grp_id
8357: AND (REQUEST_ID'||l_concat_pk_cols||') IN
8358: ( SELECT /*+ cardinality(EGO_ITM_USR_ATTR_INTRFC,10) */
8359: (ROW_IDENTIFIER * -2)'||l_concat_pk_cols||'
8360: FROM '||p_interface_table_name||'
8361: WHERE DATA_SET_ID = :DATA_SET_ID
8362: AND ATTR_GROUP_ID = :ATTR_GROUP_ID
8788: -- e.g. 'SELECT ROWNUM ENTITYNUMBER,
8789: -- Decode(ROWNUM, 1,256678,2,256679,null) INVENTORY_ITEM_ID,
8790: -- 204 ORGANIZATION_ID, 14978 ITEM_CATALOG_GROUP_ID, -
8791: -- 1 TEMPLATE_ID
8792: -- FROM ego_itm_usr_Attr_intrfc WHERE ROWNUM<3';
8793: --Return parameter : x_return_status = 1 if no associations exist
8794: -- 0 in all other cases
8795: -- x_return_status
8796: -- x_errorcode
10124: l_pk_cc_select_list := ' , ENTITYAG_TBL.'|| l_class_code_column_name;
10125: l_pk_cc_dl_col_list := ' , '||l_class_code_column_name;
10126: l_inner_pk_cc_dl_col_list := ' , ENTITY.'||l_class_code_column_name;
10127: /*Added Hint to improve performance for bug 8598093,9660659 -Added space*/
10128: l_ag_presence_chk_sql := ' SELECT /*+ index(uai EGO_ITM_USR_ATTR_INTRFC_N2 ) */ 1 FROM '||p_interface_table_name||' UAI '||
10129: ' WHERE NVL(UAI.ATTR_GROUP_ID,ATTR_GROUP_TBL.ATTR_GROUP_ID) = ATTR_GROUP_TBL.ATTR_GROUP_ID'||
10130: ' AND NVL(UAI.ATTR_GROUP_TYPE,ATTR_GROUP_TBL.DESCRIPTIVE_FLEXFIELD_NAME) = ATTR_GROUP_TBL.DESCRIPTIVE_FLEXFIELD_NAME'||
10131: ' AND UAI.DATA_SET_ID = :data_set_id '||
10132: ' AND UAI.ATTR_GROUP_INT_NAME = ATTR_GROUP_TBL.DESCRIPTIVE_FLEX_CONTEXT_CODE ';
10552:
10553: IF (nvl(fnd_profile.value('EGO_ENABLE_GATHER_STATS'),'N') = 'Y') THEN
10554:
10555: FND_STATS.GATHER_TABLE_STATS(OWNNAME => l_schema,
10556: TABNAME => 'EGO_ITM_USR_ATTR_INTRFC',
10557: CASCADE => True);
10558: END IF;
10559:
10560: END IF;