USP_MKTSEGMENTLISTHISTORICAL_PURGE
Executes the "Historical List Segment: Purge" record operation.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | Input parameter indicating the ID of the record being updated. |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the update. |
Definition
Copy
CREATE procedure dbo.[USP_MKTSEGMENTLISTHISTORICAL_PURGE]
(
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier
)
as
set nocount on;
begin try
declare @LISTLAYOUTID uniqueidentifier;
declare @MINIMUMDATAID uniqueidentifier;
declare @MAXIMUMDATAID uniqueidentifier;
declare @FIELDNAME nvarchar(128);
declare @SQL nvarchar(max);
declare @CURRENTDATE datetime;
if @CHANGEAGENTID is null
exec dbo.[USP_CHANGEAGENT_GETORCREATECHANGEAGENT] @CHANGEAGENTID output;
select
@LISTLAYOUTID = [LISTLAYOUTID],
@MINIMUMDATAID = [MINIMUMDATAID],
@MAXIMUMDATAID = [MAXIMUMDATAID]
from dbo.[MKTSEGMENTLIST]
where [ID] = @ID;
--Purge all the imported records for this list segment...
set @SQL = 'update dbo.[MKTSEGMENTLISTDATA] set' + char(13) +
' [ISDUPLICATE] = 0,';
declare LAYOUTFIELDCURSOR cursor local fast_forward for
select [FIELDNAME]
from dbo.[MKTLISTLAYOUTFIELD]
where [LISTLAYOUTID] = @LISTLAYOUTID
and [MAPPINGCODE] <> 3 --Do not import
order by [SEQUENCE];
open LAYOUTFIELDCURSOR;
fetch next from LAYOUTFIELDCURSOR into @FIELDNAME;
while (@@FETCH_STATUS = 0)
begin
set @SQL = @SQL + char(13) + ' [' + @FIELDNAME + '] = null,';
fetch next from LAYOUTFIELDCURSOR into @FIELDNAME;
end
close LAYOUTFIELDCURSOR;
deallocate LAYOUTFIELDCURSOR;
set @SQL = left(@SQL, len(@SQL) - 1) + char(13);
if @MINIMUMDATAID is not null and @MAXIMUMDATAID is not null
begin
set @SQL = @SQL + 'where [ID] between @MINIMUMDATAID and @MAXIMUMDATAID';
exec sp_executesql @SQL, N'@MINIMUMDATAID uniqueidentifier, @MAXIMUMDATAID uniqueidentifier', @MINIMUMDATAID = @MINIMUMDATAID, @MAXIMUMDATAID = @MAXIMUMDATAID;
end
else
begin
set @SQL = @SQL + 'where [SEGMENTLISTID] = @ID';
exec sp_executesql @SQL, N'@ID uniqueidentifier', @ID = @ID;
end
--Mark the historical list segment record as purged and set the date purged...
set @CURRENTDATE = getdate();
update dbo.[MKTSEGMENTLIST] set
[STATUSCODE] = 5, --Purged
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CURRENTDATE
where [ID] = @ID;
update dbo.[MKTSEGMENTLISTHISTORICAL] set
[DATEPURGED] = @CURRENTDATE,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CURRENTDATE
where [ID] = @ID;
end try
begin catch
exec dbo.[USP_RAISE_ERROR];
return 1;
end catch
return 0;