I have requirment of migrating PL/SQL codes into datastage jobs.My source and target are Oracle.
In PL/SQL code while loading data into targtet table ,seqno is generated in insert statement using stored proc and in case of exceptions its again called.Sql code is like this:-
Code: Select all
"BEGIN INSERT INTO DWH.WAC(SYS_SOURCE_BATCH_ID, SYS_SOURCE_SEQUENCE_NO, SYS_LOAD_DATE, SYS_PROCESS_CODE)
VALUES(?<<OutputRoot.MQRFH2.usr.iSequenceNumber>>,
TO_NUMBER(RTRIM(?<<Environment.usr.counter>>)),
TRUNC(SYSDATE), 'N', 'A');
EXCEPTION WHEN OTHERS THEN
INSERT INTO DWH.WAC_HSP (SYS_SOURCE_BATCH_ID, SYS_SOURCE_SEQUENCE_NO, SYS_LOAD_DATE, SYS_PROCESS_CODE)
VALUES(?<<OutputRoot.MQRFH2.usr.iSequenceNumber>>,TO_NUMBER(RTRIM(?<<Environment.usr.counter>>)), TRUNC(SYSDATE), 'E', 'A');
END;"
I am converting this code into below design:-
srcOra-------> Transf--------> TgtOra -------------> HsptRejOra
In my design,i am generating seqence number in transformer
SeqNo=(@PARTITIONNUM+((@INROWNUM-1)* @NUMPARTITIONS))+1
My issue with this design is whenever hospital rejection happens on target table,TgtOra will miss that seqno and that seqno will be present in HsptRejOra.But in PL/SQL code its generating seqno saperatly for target and rejections.
Can anyone assist me to chieve the same design.Is it possible we can call TO_NUMBER(RTRIM(?<<Environment.usr.counter>>)) in insert statement in TgtOra and HsptRejOra.