USP_MKTCOMMUNICATIONTEMPLATEDEFAULTAPPEAL_SAVEFIELD_FROMXML
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@COMMUNICATIONTEMPLATEID | uniqueidentifier | IN | |
@APPEALINFORMATION | xml | IN | |
@CHANGEAGENTID | uniqueidentifier | IN |
Definition
Copy
create procedure dbo.[USP_MKTCOMMUNICATIONTEMPLATEDEFAULTAPPEAL_SAVEFIELD_FROMXML]
(
@COMMUNICATIONTEMPLATEID uniqueidentifier,
@APPEALINFORMATION xml,
@CHANGEAGENTID uniqueidentifier = null
)
as
set nocount on;
declare @APPEALDEFAULTID 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.[MKTCOMMUNICATIONTEMPLATEDEFAULTAPPEAL] 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.[MKTCOMMUNICATIONTEMPLATEDEFAULTAPPEAL]
inner join @APPEALINFORMATION.nodes('/APPEALINFORMATION/ITEM') T(c) on T.c.value('(RECORDSOURCEID)[1]','uniqueidentifier') = [MKTCOMMUNICATIONTEMPLATEDEFAULTAPPEAL].[RECORDSOURCEID]
where [MKTCOMMUNICATIONTEMPLATEDEFAULTAPPEAL].[COMMUNICATIONTEMPLATEID] = @COMMUNICATIONTEMPLATEID;
--Insert any new appeal information...
insert into dbo.[MKTCOMMUNICATIONTEMPLATEDEFAULTAPPEAL] (
[ID],
[COMMUNICATIONTEMPLATEID],
[RECORDSOURCEID],
[APPEALSYSTEMID],
[APPEALID],
[APPEALDESCRIPTION],
[ADDEDBYID],
[DATEADDED],
[CHANGEDBYID],
[DATECHANGED]
)
select
newid(),
@COMMUNICATIONTEMPLATEID,
T.c.value('(RECORDSOURCEID)[1]','uniqueidentifier') as [RECORDSOURCEID],
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.[MKTCOMMUNICATIONTEMPLATEDEFAULTAPPEAL] on [MKTCOMMUNICATIONTEMPLATEDEFAULTAPPEAL].[COMMUNICATIONTEMPLATEID] = @COMMUNICATIONTEMPLATEID
and [MKTCOMMUNICATIONTEMPLATEDEFAULTAPPEAL].[RECORDSOURCEID] = T.c.value('(RECORDSOURCEID)[1]','uniqueidentifier')
where [MKTCOMMUNICATIONTEMPLATEDEFAULTAPPEAL].[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.[MKTCOMMUNICATIONTEMPLATEDEFAULTAPPEAL]
where [COMMUNICATIONTEMPLATEID] = @COMMUNICATIONTEMPLATEID
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 @APPEALDEFAULTID;
while (@@FETCH_STATUS = 0)
begin
exec dbo.[USP_MKTCOMMUNICATIONTEMPLATEDEFAULTAPPEAL_DELETEBYID_WITHCHANGEAGENTID] @APPEALDEFAULTID, @CHANGEAGENTID;
fetch next from DELETECURSOR into @APPEALDEFAULTID;
end
close DELETECURSOR;
deallocate DELETECURSOR;
end try
begin catch
exec dbo.[USP_RAISE_ERROR];
return 1;
end catch
return 0;