USP_DATAFORMTEMPLATE_EDIT_MKTDUPLICATE
The save procedure used by the edit dataform template "Record Source Duplicate Criteria Edit Form".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | The input ID parameter indicating the ID of the record being edited. |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the procedure. |
@QUERYVIEWCATALOGID | uniqueidentifier | IN | Query View Catalog ID |
@DEDUPLISTS | bit | IN | Apply duplicate criteria during list import |
@DUPLICATEFIELDS | xml | IN | Fields |
Definition
Copy
CREATE procedure dbo.[USP_DATAFORMTEMPLATE_EDIT_MKTDUPLICATE]
(
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier,
@QUERYVIEWCATALOGID uniqueidentifier,
@DEDUPLISTS bit,
@DUPLICATEFIELDS xml
)
as
set nocount on;
declare @DUPLICATEID uniqueidentifier;
declare @SEGMENTLISTDUPLICATEPROCESSID uniqueidentifier;
declare @SEGMENTLISTID uniqueidentifier;
declare @CURRENTDATE datetime;
set @CURRENTDATE = getdate();
begin try
if @CHANGEAGENTID is null
exec dbo.[USP_CHANGEAGENT_GETORCREATECHANGEAGENT] @CHANGEAGENTID output;
--Since @ID is actually the queryviewcatalogID, get the duplicate ID for @ID
select
@DUPLICATEID = [ID]
from dbo.[MKTDUPLICATE]
where [QUERYVIEWCATALOGID] = @ID;
if @DUPLICATEID is null
begin
set @DUPLICATEID = newid();
insert into dbo.[MKTDUPLICATE] (
[ID],
[QUERYVIEWCATALOGID],
[DEDUPLISTS],
[ADDEDBYID],
[CHANGEDBYID],
[DATEADDED],
[DATECHANGED]
) values (
@DUPLICATEID,
@ID,
@DEDUPLISTS,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
end
else
update dbo.[MKTDUPLICATE] set
[QUERYVIEWCATALOGID] = @QUERYVIEWCATALOGID,
[DEDUPLISTS] = @DEDUPLISTS,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CURRENTDATE
where [ID] = @DUPLICATEID;
--Save the duplicate fields...
exec dbo.[USP_MKTDUPLICATE_GETDUPLICATEFIELDS_UPDATEFROMXML] @DUPLICATEID, @DUPLICATEFIELDS, @CHANGEAGENTID, @CURRENTDATE;
if @DEDUPLISTS = 1
begin
--Find any list segments that do not already have a duplicate process parameter set and create one...
declare LISTSEGMENTCURSOR cursor local fast_forward for
select [MKTSEGMENTLIST].[ID]
from dbo.[MKTSEGMENT]
inner join dbo.[MKTSEGMENTLIST] on [MKTSEGMENTLIST].[ID] = [MKTSEGMENT].[CURRENTSEGMENTLISTID]
left join dbo.[MKTSEGMENTLISTDEDUPEPROCESS] on [MKTSEGMENTLISTDEDUPEPROCESS].[SEGMENTLISTID] = [MKTSEGMENTLIST].[ID]
inner join dbo.[MKTDUPLICATE] on [MKTDUPLICATE].[QUERYVIEWCATALOGID] = [MKTSEGMENT].[QUERYVIEWCATALOGID]
where [MKTSEGMENTLIST].[TYPECODE] = 0
and [MKTSEGMENTLIST].[STATUSCODE] = 3
and [MKTSEGMENTLIST].[PARENTSEGMENTID] is null
and [MKTSEGMENTLISTDEDUPEPROCESS].[ID] is null
and [MKTDUPLICATE].[ID] = @DUPLICATEID
and dbo.[UFN_MKTSEGMENTLIST_DUPLICATEFIELDSEXIST]([MKTSEGMENTLIST].[ID]) = 1;
open LISTSEGMENTCURSOR;
fetch next from LISTSEGMENTCURSOR into @SEGMENTLISTID;
while (@@FETCH_STATUS = 0)
begin
--Create the duplicate process parameter set for the list segment...
set @SEGMENTLISTDUPLICATEPROCESSID = null;
exec dbo.[USP_MKTSEGMENTLISTDEDUPEPROCESS_CREATE] @SEGMENTLISTDUPLICATEPROCESSID output, @SEGMENTLISTID, @CHANGEAGENTID;
fetch next from LISTSEGMENTCURSOR into @SEGMENTLISTID;
end
close LISTSEGMENTCURSOR;
deallocate LISTSEGMENTCURSOR;
end
end try
begin catch
exec dbo.[USP_RAISE_ERROR];
return 1;
end catch
return 0;