You are on page 1of 4

DECLARE @UNQ_ID varchar(10),

@ClaimUnqId varchar(10),
@LOSS_FILE_NUM varchar(20),
@CHG_DTE datetime,
@begin_time DATETIME,
@end_time DATETIME,
@begin_lsn BINARY(10),
@end_lsn BINARY(10),
@ProcessControlRowGuid uniqueidentifier,
@ProcedureIndex int,
@getDataFromMultipletables CURSOR

set @ProcedureIndex=1

select @ProcessControlRowGuid=ProcessControlRowGuid from CmSLProcessControl


where ProcessDt=(select max(ProcessDt) from CmSLProcessControl);

select @begin_time = (SELECT ISNULL(Max(ProcessDt),CAST('1999-01-01' AS


DATETIME)) FROM CmSLProcessControl where StatusCd ='C' )
select @end_time = GETDATE();
select @begin_lsn = sys.fn_cdc_map_time_to_lsn('smallest greater than',
@begin_time);
select @end_lsn = sys.fn_cdc_map_time_to_lsn('largest less than or equal',
@end_time);

SET @getDataFromMultipletables = CURSOR FOR


select distinct ALL_TABLES.UNQ_ID --we do this to get distinct
UNQ_ID's, that way we don't need to loop more than once for the same UNQ_ID
from
(
select ALC.UNQ_ID
from DBO.ALCLAIM ALC
inner join
(
select SourceKey1 as UNQ_ID
from dbo.CmSLRecordControl
where ProcessControlRowGuid !=
@ProcessControlRowGuid
and StatusCd ='E'
and ProcedureIndex = @ProcedureIndex
union
select distinct UNQ_ID
from
cdc.fn_cdc_get_all_changes_dbo_ALCLAIM(@begin_lsn,@end_lsn,'all')
where UNQ_ID not in (
select
SourceKey1 as UNQ_ID
from
dbo.CmSLRecordControl
where
ProcessControlRowGuid != @ProcessControlRowGuid
and StatusCd
='E'
and
ProcedureIndex = @ProcedureIndex
)
) CDC on CDC.UNQ_ID = ALC.UNQ_ID
union --table2
select GLC.UNQ_ID
from DBO.GLCLAIM GLC
inner join
(
select SourceKey1 as UNQ_ID
from dbo.CmSLRecordControl
where ProcessControlRowGuid !=
@ProcessControlRowGuid
and StatusCd ='E'
and ProcedureIndex = @ProcedureIndex
union
select distinct UNQ_ID
from
cdc.fn_cdc_get_all_changes_dbo_GLCLAIM(@begin_lsn,@end_lsn,'all')
where UNQ_ID not in (
select
SourceKey1 as UNQ_ID
from
dbo.CmSLRecordControl
where
ProcessControlRowGuid != @ProcessControlRowGuid
and StatusCd
='E'
and
ProcedureIndex = @ProcedureIndex
)
) CDC on CDC.UNQ_ID = GLC.UNQ_ID
union --table3
select HOC.UNQ_ID
from DBO.HOCLAIM HOC
inner join
(
select SourceKey1 as UNQ_ID
from dbo.CmSLRecordControl
where ProcessControlRowGuid !=
@ProcessControlRowGuid
and StatusCd ='E'
and ProcedureIndex = @ProcedureIndex
union
select distinct UNQ_ID
from
cdc.fn_cdc_get_all_changes_dbo_HOCLAIM(@begin_lsn,@end_lsn,'all')
where UNQ_ID not in (
select
SourceKey1 as UNQ_ID
from
dbo.CmSLRecordControl
where
ProcessControlRowGuid != @ProcessControlRowGuid
and StatusCd
='E'
and
ProcedureIndex = @ProcedureIndex
)
) CDC on CDC.UNQ_ID = HOC.UNQ_ID
) ALL_TABLES

OPEN @getDataFromMultipletables
FETCH NEXT
FROM @getDataFromMultipletables INTO @ClaimUnqId
WHILE @@FETCH_STATUS = 0
BEGIN
select @UNQ_ID = T.UNQ_ID,
@CHG_DTE = T.CHG_DTE,
@LOSS_FILE_NUM = T.LOSS_EVENT_NUMBER

from
(
select distinct c.UNQ_ID,
ALC.CHG_DTE,
le.LOSS_EVENT_NUMBER
from dbo.CLAIM c with (NOLOCK)
inner join ALCLAIM ALC with (NOLOCK) on
ALC.UNQ_ID = c.UNQ_ID
inner join dbo.LOSS_EVENT le on
c.LOSS_EVENT_ID = le.LOSS_EVENT_ID
where ALC.UNQ_ID = @ClaimUnqId
union
select c.UNQ_ID,
GLC.CHG_DTE,
le.LOSS_EVENT_NUMBER
from dbo.CLAIM c with (NOLOCK)
inner join GLCLAIM GLC with (NOLOCK) on
GLC.UNQ_ID = c.UNQ_ID
inner join dbo.LOSS_EVENT le on
c.LOSS_EVENT_ID = le.LOSS_EVENT_ID
where GLC.UNQ_ID = @ClaimUnqId
union
select c.UNQ_ID,
HLC.CHG_DTE,
le.LOSS_EVENT_NUMBER
from dbo.CLAIM c with (NOLOCK)
inner join HOCLAIM HLC with (NOLOCK) on
HLC.UNQ_ID = c.UNQ_ID
inner join dbo.LOSS_EVENT le on
c.LOSS_EVENT_ID = le.LOSS_EVENT_ID
where HLC.UNQ_ID = @ClaimUnqId
) T;

if exists (select * from OPENQUERY(DCLM,'select


LOSS_FILE_NUM from LOSS_FILE') oq
where oq.LOSS_FILE_NUM=@LOSS_FILE_NUM)

BEGIN
update OQPU
set CHG_DTE = cast(@CHG_DTE as date)
from OPENQUERY(DCLM,'select
LAST_CHANGED_DTTM,
LOSS_FILE_NUM
from LOSS_FILE') OQPU
where OQPU.LOSS_FILE_NUM=@LOSS_FILE_NUM

END
ELSE
BEGIN
insert OPENQUERY(DCLM,'select
LAST_CHANGED_DTTM,
LOSS_FILE_NUM
from LOSS_FILE'
)

Values
(
cast(@CHG_DTE as
date),
@LOSS_FILE_NUM
)
END
FETCH NEXT
FROM @getDataFromMultipletables INTO @ClaimUnqId

END

CLOSE @getDataFromMultipletables
DEALLOCATE @getDataFromMultipletables

You might also like