Professional Documents
Culture Documents
STDNRDZR
STDNRDZR
Dq_Pr_Standardizer_t (
P_Project_Id IN VARCHAR2,
P_Mapping_Id IN VARCHAR2,
Tran_Seq IN VARCHAR2,
P_Transformation_Id IN VARCHAR2,
Prev_Trans_Seq IN VARCHAR2,
P_Error OUT VARCHAR2)
IS
CURSOR C1
IS
SELECT Table_Name || '.' || Column_Name Column_Name,
Delimiter,
Strategy_Type,
Table_Name || '.' || Condition Condition
FROM MAPPING_MNTNCE_1707
WHERE Project_Id = P_Project_Id
AND Mapping_Id = P_Mapping_Id
AND Transformation_Seq = Tran_Seq
AND Derived_Column = 'Y';
CURSOR C2
IS
SELECT DISTINCT GROUP_ID
FROM MAPPING_MNTNCE_1707
WHERE Project_Id = P_Project_Id
AND Mapping_Id = P_Mapping_Id
AND Transformation_Seq = Tran_Seq
AND Derived_Column = 'N';
BEGIN
OPEN C2;
IF Lv_Group_ID IS NULL
THEN
SELECT Query_Select,
Query_From,
Query_Where,
Query_Order,
Query_Group
INTO Lv_Query_Select,
Lv_Query_From,
Lv_Query_Where,
Lv_Query_Order,
Lv_Query_Group
FROM Dq_Query_Maintenance
WHERE Project_Id = P_Project_Id
AND Mapping_Id = P_Mapping_Id
AND Transformation_Seq = Prev_Trans_Seq;
ELSIF Lv_Group_ID IS NOT NULL
THEN
SELECT Query_Select,
Query_From,
Query_Where,
Query_Order,
Query_Group
INTO Lv_Query_Select,
Lv_Query_From,
Lv_Query_Where,
Lv_Query_Order,
Lv_Query_Group
FROM Dq_Query_Maintenance
WHERE Project_Id = P_Project_Id
AND Mapping_Id = P_Mapping_Id
AND Transformation_Seq = Prev_Trans_Seq
AND GROUP_ID = Lv_Group_ID;
END IF;
CLOSE C2;
dbms_output.put_line(Lv_INPUT_COLUMN);
FOR I
IN (SELECT NVL2 (Column_Name, Table_Name || '.' || Column_Name, NULL)
AS Column_Name
FROM MAPPING_MNTNCE_1707
WHERE PROJECT_ID = P_Project_ID
AND MAPPING_ID = P_Mapping_ID
AND TRANSFORMATION_SEQ = Tran_seq
)
LOOP
Lv_INPUT_COLUMN := Lv_INPUT_COLUMN || ',';
Lv_INPUT_COLUMN := Lv_INPUT_COLUMN || I.Column_name;
dbms_output.put_line(Lv_INPUT_COLUMN);
IF Lv_Trail_Lead_Space = 'Y'
THEN
Lv_Trim_Open := ' Trim( ';
Lv_Trim_Close := ' ) ';
END IF;
IF Lv_Multiple_Space = 'Y'
THEN
Lv_Space_Open := ' regexp_replace( ';
Lv_Space_Close := ' ,'' {1,}'','' '') ';
END IF;
IF LV_Case = 'Y'
THEN
Lv_Case_Open := 'c';
ELSIF LV_Case = 'N'
THEN
Lv_Case_Open := 'i';
END IF;
/*
##############>>>>>>>>>>>> Remove Custom String without delimiter
<<<<<<<<<<<<<<<<########
*/
FOR I IN C1
LOOP
IF Lv_Delimiter IS NULL
THEN
IF Lv_Scope = 'ANYWHERE'
AND I.Strategy_Type = 'REMOVE CUSTOM STRING'
THEN
Lv_Conv :=
Lv_Trim_Open
|| ' '
|| Lv_Space_Open
|| ' Regexp_Replace ('
|| Lv_INPUT_COLUMN
|| ' , '''
|| Lv_Custom_Correction_Text
|| ''' , '''',1,0,'''
|| Lv_Case_Open
|| ''') '
|| Lv_Space_Close
|| ' '
|| Lv_Trim_Close
|| ' As '
|| Lv_Out_Col;
dbms_output.put_line(Lv_Conv);
/*
##############>>>>>>>>>>>> Replace Custom String without delimiter
<<<<<<<<<<<<<<<<########
*/
ELSIF Lv_Scope = 'ANYWHERE'
AND I.Strategy_Type = 'REPLACE CUSTOM STRING'
THEN
Lv_Conv :=
Lv_Trim_Open
|| ' '
|| Lv_Space_Open
|| ' Regexp_Replace ('
|| Lv_INPUT_COLUMN
|| ' , '''
|| Lv_Custom_Correction_Text
|| ''' , '''
|| Lv_Custom_Correct_Text
|| ''',1,0,'''
|| Lv_Case_Open
|| ''') '
|| Lv_Space_Close
|| ' '
|| Lv_Trim_Close
|| ' As '
|| Lv_Out_Col;
/*
##############>>>>>>>>>>>> Remove Reference Table Matches without Delimiter
<<<<<<<<<<<<<<<<########
*/
ELSIF
Lv_Scope = 'ANYWHERE'
AND I.Strategy_Type = 'REMOVE REFERENCE TABLE MATCHES'
THEN
Lv_Conv :=
Lv_Trim_Open
|| ' '
|| Lv_Space_Open
|| ' Regexp_Replace ('
|| Lv_INPUT_COLUMN
|| ' , '
|| Lv_Ref_Correction_Column
|| ' , '''',1,0,'''
|| Lv_Case_Open
|| ''') '
|| Lv_Space_Close
|| ' '
|| Lv_Trim_Close
|| ' As '
|| Lv_Out_Col
|| ' From '
|| Lv_Inp_Tab
|| ' Full Outer Join '
|| Lv_Ref_Tab
|| ' On Regexp_like('
|| Lv_INPUT_COLUMN
|| ' , '
|| Lv_Ref_Correction_Column
|| ','''
|| Lv_Case_Open
|| ''')';
/*
##############>>>>>>>>>>>> Replace Reference Table Matches without Delimiter
<<<<<<<<<<<<<<<<########
*/
/*
##############>>>>>>>>>>>> Remove Custom String without delimiter in the start
<<<<<<<<<<<<<<<<########
*/
ELSIF
Lv_Scope = 'START'
AND I.Strategy_Type = 'REMOVE CUSTOM STRING'
THEN
Lv_Conv :=
'Select '
|| Lv_INPUT_COLUMN
|| ' , '
|| Lv_Trim_Open
|| ' '
|| Lv_Space_Open
|| ' Regexp_Replace ( '
|| Lv_INPUT_COLUMN
|| ' , '''
|| Lv_Custom_Correction_Text
|| ''' , '''',1,1,'''
|| Lv_Case_Open
|| ''') '
|| Lv_Space_Close
|| ' '
|| Lv_Trim_Close
|| ' As '
|| Lv_Out_Col
|| ' from '
|| Lv_Inp_Tab;
/*
##############>>>>>>>>>>>> Replace Custom String without delimiter in the start
<<<<<<<<<<<<<<<<########
*/
*/
/*
##############>>>>>>>>>>>> Replace Reference Table Matches without delimiter in the
start <<<<<<<<<<<<<<<<########
*/
/*
##############>>>>>>>>>>>> Remove Custom String without delimiter in the end
<<<<<<<<<<<<<<<<########
*/
/*
##############>>>>>>>>>>>>Replace Custom String without delimiter in the End
<<<<<<<<<<<<<<<<########
*/
IF Lv_Scope = 'ANYWHERE'
THEN
Lv_Conv1 :=
' REGEXP_REPLACE((REGEXP_SUBSTR('
|| Lv_INPUT_COLUMN
|| ' , ''[^'
|| Lv_Delimiter
|| ']+'',1)), '
|| Lv_Pattern
|| ' , '
|| Lv_Text
|| ',1,0,'''
|| Lv_Case_Open
|| ''') ';
FOR I IN 1 .. Cnt
LOOP
Var := Var + 1;
Lv_Conv1 :=
Lv_Conv1
|| '||'''
|| Lv_Delimiter
|| '''|| REGEXP_REPLACE((REGEXP_SUBSTR('
|| Lv_INPUT_COLUMN
|| ' , ''[^'
|| Lv_Delimiter
|| ']+'',1,'
|| Var
|| ')), '
|| Lv_Pattern
|| ' , '
|| Lv_Text
|| ',1,0,'''
|| Lv_Case_Open
|| ''') ';
END LOOP;
IF Lv_Standadizer_Type = 'REMOVE CUSTOM STRING'
OR Lv_Standadizer_Type = 'REPLACE CUSTOM STRING'
THEN
Lv_Conv :=
'select '
|| Lv_INPUT_COLUMN
|| ' ,'
|| Lv_Trim_Open
|| ' '
|| Lv_Space_Open
|| ' Trim ( '''
|| Lv_Delimiter
|| ''' From '
|| Lv_Query2
|| ') '
|| Lv_Space_Close
|| ' '
|| Lv_Trim_Close
|| ' As '
|| Lv_Out_Col
|| ' from '
|| Lv_Inp_Tab;
ELSIF Lv_Standadizer_Type = 'REMOVE REFERENCE TABLE MATCHES'
OR Lv_Standadizer_Type = 'REPLACE REFERENCE TABLE MATCHES'
THEN
Lv_Conv :=
'Select '
|| Lv_INPUT_COLUMN
|| ' , '
|| Lv_Trim_Open
|| ' '
|| Lv_Space_Open
|| ' Trim ('''
|| Lv_Delimiter
|| ''' From '
|| Lv_Query2
|| ') '
|| Lv_Space_Close
|| ' '
|| Lv_Trim_Close
|| ' As '
|| Lv_Out_Col
|| '
from '
|| Lv_Inp_Tab
|| ' Full Outer Join '
|| Lv_Ref_Tab
|| ' On Regexp_like('
|| Lv_INPUT_COLUMN
|| ' , '
|| Lv_Ref_Correction_Column
|| ','''
|| Lv_Case_Open
|| ''')';
END IF;
ELSIF Lv_Scope = 'START'
THEN
Lv_Conv1 :=
' REGEXP_REPLACE((REGEXP_SUBSTR('
|| Lv_INPUT_COLUMN
|| ' , ''[^'
|| Lv_Delimiter
|| ']+'',1)), '
|| Lv_Pattern
|| ' , '
|| Lv_Text
|| ',1,1,'''
|| Lv_Case_Open
|| ''') ';
FOR I IN 1 .. Cnt
LOOP
Var := Var + 1;
Lv_Conv1 :=
Lv_Conv1
|| ' ||'''
|| Lv_Delimiter
|| '''||REGEXP_REPLACE((REGEXP_SUBSTR('
|| Lv_INPUT_COLUMN
|| ' , ''[^'
|| Lv_Delimiter
|| ']+'',1,'
|| Var
|| ')), '
|| Lv_Pattern
|| ' , '
|| Lv_Text
|| ',1,1,'''
|| Lv_Case_Open
|| ''') ';
END LOOP;
FOR I IN 1 .. Cnt
LOOP
Var := Var + 1;
Lv_Conv1 :=
Lv_Conv1
|| ' ||'''
|| Lv_Delimiter
|| '''||Reverse(REGEXP_REPLACE(Reverse((REGEXP_SUBSTR('
|| Lv_INPUT_COLUMN
|| ' , ''[^'
|| Lv_Delimiter
|| ']+'',1,'
|| Var
|| '))), Reverse('
|| Lv_Pattern
|| ') , Reverse('
|| Lv_Text
|| '),1,1,'''
|| Lv_Case_Open
|| ''')) ';
END LOOP;
DBMS_OUTPUT.put_line(Lv_Conv);
DBMS_OUTPUT.put_line(Lv_Conv1);
END IF;
END IF;
END IF;
UPDATE MAPPING_MNTNCE_1707
SET Column_Query = Lv_Conv
WHERE Project_Id = P_Project_Id
AND Mapping_Id = P_Mapping_Id
AND Column_Name =
SUBSTR (i.Column_Name, INSTR (i.Column_Name, '.', 1) + 1);
DBMS_OUTPUT.put_line(LV_Sample_Col);
IF Lv_Query_Where IS NULL
THEN
Lv_Sample_Query :=
Lv_Query_Select
|| ' '
|| Lv_Query_From
|| ' '
|| Lv_Query_Where||' Where Rownum <201'
|| ' '
|| Lv_Query_Order
|| ' '
|| Lv_Query_Group
|| ' ';
ELSIF Lv_Query_Where IS NOT NULL
THEN
Lv_Sample_Query :=
Lv_Query_Select
|| ' '
|| Lv_Query_From
|| ' '
|| Lv_Query_Where||' And Rownum <201'
|| ' '
|| Lv_Query_Order
|| ' '
|| Lv_Query_Group
|| ' ';
END IF;
Lv_Sample_Query :=
Lv_Query_Select
|| ' '
|| Lv_Query_From
|| ' '
|| Lv_Query_Where
|| ' '
|| Lv_Query_Order
|| ' '
|| Lv_Query_Group
|| ' ';
DBMS_OUTPUT.put_line(Lv_Query_Select);
DBMS_OUTPUT.put_line(LV_Sample_Col);
/* INSERT INTO Dq_Query_Maintenance (Project_Id,
Mapping_Id,
Transformation_Seq,
Transformation_Id,
GROUP_ID,
Query_Select,
Query_From,
Query_Where,
Query_Order,
Query_Group,
Sample_Query)
VALUES (P_Project_Id,
P_Mapping_Id,
Tran_Seq,
P_Transformation_Id,
Lv_Group_ID,
Lv_Query_Select,
Lv_Query_From,
Lv_Query_Where,
Lv_Query_Order,
Lv_Query_Group,
Lv_Sample_Query);
COMMIT;*/
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
P_Error :=
'Error Happened '
|| DBMS_UTILITY.FORMAT_ERROR_BACKTRACE
|| ' - '
|| DBMS_UTILITY.FORMAT_ERROR_STACK;
END;
/
/*-------------------
--------------------------
*/---