USP_MKTSEGMENTATIONACTIVATE_SAVEFIELD_FROMXML
Saves an activation source's information.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SEGMENTATIONID | uniqueidentifier | IN | |
@APPEALINFORMATION | xml | IN | |
@CHANGEAGENTID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.[USP_MKTSEGMENTATIONACTIVATE_SAVEFIELD_FROMXML]
(
@SEGMENTATIONID uniqueidentifier,
@APPEALINFORMATION xml,
@CHANGEAGENTID uniqueidentifier = null
)
as
set nocount on;
declare @ACTIVATEID uniqueidentifier;
declare @CURRENTDATE datetime;
begin try
if @CHANGEAGENTID is null
exec dbo.[USP_CHANGEAGENT_GETORCREATECHANGEAGENT] @CHANGEAGENTID output;
set @CURRENTDATE = getdate();
--Update any existing appeal information, making sure not to overwrite the gift IDSet IDs...
update dbo.[MKTSEGMENTATIONACTIVATE] set
[APPEALSYSTEMID] = isnull(T.c.value('(APPEALSYSTEMID)[1]','nvarchar(36)'), ''),
[APPEALID] = T.c.value('(APPEALID)[1]','nvarchar(100)'),
[APPEALDESCRIPTION] = T.c.value('(APPEALDESCRIPTION)[1]','nvarchar(255)'),
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CURRENTDATE
from dbo.[MKTSEGMENTATIONACTIVATE] as [SA]
inner join @APPEALINFORMATION.nodes('/APPEALINFORMATION/ITEM') T(c) on T.c.value('(RECORDSOURCEID)[1]','uniqueidentifier') = [SA].[RECORDSOURCEID]
where [SA].[SEGMENTATIONID] = @SEGMENTATIONID;
--Insert any new appeal information...
insert into dbo.[MKTSEGMENTATIONACTIVATE] (
[ID],
[SEGMENTATIONID],
[RECORDSOURCEID],
[NORMALGIFTIDSETREGISTERID],
[UNRESOLVEDGIFTIDSETREGISTERID],
[APPEALSYSTEMID],
[APPEALID],
[APPEALDESCRIPTION],
[ADDEDBYID],
[DATEADDED],
[CHANGEDBYID],
[DATECHANGED]
)
select
newid(),
@SEGMENTATIONID,
T.c.value('(RECORDSOURCEID)[1]','uniqueidentifier') as [RECORDSOURCEID],
null,
null,
isnull(T.c.value('(APPEALSYSTEMID)[1]','nvarchar(36)'), '') as [APPEALSYSTEMID],
T.c.value('(APPEALID)[1]','nvarchar(100)') as [APPEALID],
T.c.value('(APPEALDESCRIPTION)[1]','nvarchar(255)') as [APPEALDESCRIPTION],
@CHANGEAGENTID,
@CURRENTDATE,
@CHANGEAGENTID,
@CURRENTDATE
from @APPEALINFORMATION.nodes('/APPEALINFORMATION/ITEM') T(c)
left join dbo.[MKTSEGMENTATIONACTIVATE] on [MKTSEGMENTATIONACTIVATE].[SEGMENTATIONID] = @SEGMENTATIONID and [MKTSEGMENTATIONACTIVATE].[RECORDSOURCEID] = T.c.value('(RECORDSOURCEID)[1]','uniqueidentifier')
where [MKTSEGMENTATIONACTIVATE].[ID] is null;
--Delete any rows that are in the table but not in the XML variable...
declare DELETECURSOR cursor local fast_forward for
select [ID]
from dbo.[MKTSEGMENTATIONACTIVATE]
where [SEGMENTATIONID] = @SEGMENTATIONID
and [RECORDSOURCEID] not in (select T.c.value('(RECORDSOURCEID)[1]','uniqueidentifier') from @APPEALINFORMATION.nodes('/APPEALINFORMATION/ITEM') T(c));
open DELETECURSOR;
fetch next from DELETECURSOR into @ACTIVATEID;
while (@@FETCH_STATUS = 0)
begin
exec dbo.[USP_MKTSEGMENTATIONACTIVATE_DELETEBYID_WITHCHANGEAGENTID] @ACTIVATEID, @CHANGEAGENTID;
fetch next from DELETECURSOR into @ACTIVATEID;
end
close DELETECURSOR;
deallocate DELETECURSOR;
end try
begin catch
exec dbo.[USP_RAISE_ERROR];
return 1;
end catch
return 0;