USP_GLOBALCHANGE_BATCHREPORTDELETE
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CHANGEAGENTID | uniqueidentifier | IN | |
@ASOF | datetime | IN | |
@NUMBERADDED | int | INOUT | |
@NUMBEREDITED | int | INOUT | |
@NUMBERDELETED | int | INOUT | |
@SELECTIONID | uniqueidentifier | IN | |
@DATEINTERVAL | int | IN | |
@DATEPART | tinyint | IN |
Definition
Copy
CREATE procedure dbo.[USP_GLOBALCHANGE_BATCHREPORTDELETE]
(
@CHANGEAGENTID uniqueidentifier = null,
@ASOF as datetime = null,
@NUMBERADDED integer = 0 output,
@NUMBEREDITED integer = 0 output,
@NUMBERDELETED integer = 0 output,
@SELECTIONID uniqueidentifier = null,
@DATEINTERVAL integer = 1,
@DATEPART tinyint = 3
)
with execute as owner
as begin
set nocount off;
declare @CUTOFF datetime;
declare @BATCHID uniqueidentifier;
set @NUMBERADDED = 0;
set @NUMBEREDITED = 0;
set @NUMBERDELETED = 0;
begin try
set @CUTOFF = dbo.[UFN_PURGEGLOBALCHANGE_RESOLVEDATEFILTER](@DATEPART, @DATEINTERVAL, getdate());
if @CUTOFF is null
raiserror('BBERR_COULDNOTRESOLVEINTERVAL', 13, 1);
if object_id('tempdb..#BATCHES') is not null drop table #BATCHES;
create table #BATCHES ([BATCHID] uniqueidentifier)
if @SELECTIONID is null
insert into #BATCHES
select distinct
[BATCH].[ID]
from dbo.[BATCH]
inner join dbo.[BATCHSTATUS] on [BATCH].[ID] = [BATCHSTATUS].[PARAMETERSETID]
inner join dbo.[BUSINESSPROCESSOUTPUT] on [BUSINESSPROCESSOUTPUT].[BUSINESSPROCESSSTATUSID] = [BATCHSTATUS].[ID]
where [BATCH].[STATUSCODE] = 1 and [BATCH].[DATEADDED] < @CUTOFF
else
insert into #BATCHES
select distinct
[BATCH].[ID]
from dbo.[BATCH]
inner join dbo.[BATCHSTATUS] on [BATCH].[ID] = [BATCHSTATUS].[PARAMETERSETID]
inner join dbo.[BUSINESSPROCESSOUTPUT] on [BUSINESSPROCESSOUTPUT].[BUSINESSPROCESSSTATUSID] = [BATCHSTATUS].[ID]
where [BATCH].[STATUSCODE] = 1 and [BATCH].[DATEADDED] < @CUTOFF
and [BATCH].[ID] in (select [ID] from dbo.[UFN_IDSETREADER_GETRESULTS_GUID](@SELECTIONID));
declare BATCHES cursor local fast_forward for
select [BATCHID] from #BATCHES;
open BATCHES;
fetch next from BATCHES into @BATCHID;
while (@@FETCH_STATUS = 0)
begin
exec dbo.[USP_BATCH_CONTROLANDEXCEPTIONREPORT_DELETE] @BATCHID;
set @NUMBERDELETED = @NUMBERDELETED + 1;
fetch next from BATCHES into @BATCHID;
end
close BATCHES;
deallocate BATCHES;
drop table #BATCHES;
end try
begin catch
exec dbo.[USP_RAISE_ERROR];
return 1;
end catch
return 0;
end