USP_MKTSEGMENTATIONACTIVATE_UPDATEAPPEALINFO
Updates the saved appeal name and description for each record source of a marketing effort.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SEGMENTATIONID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.[USP_MKTSEGMENTATIONACTIVATE_UPDATEAPPEALINFO]
(
@SEGMENTATIONID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null
)
as
set nocount on;
declare @SEGMENTATIONACTIVATEID uniqueidentifier;
declare @VIEWNAME nvarchar(128);
declare @PRIMARYKEYFIELD nvarchar(128);
declare @APPEALIDFIELD nvarchar(128);
declare @DESCRIPTIONFIELD nvarchar(128);
declare @APPEALSYSTEMID nvarchar(36);
declare @OLDAPPEALID nvarchar(100);
declare @OLDAPPEALDESCRIPTION nvarchar(255);
declare @NEWAPPEALID nvarchar(100);
declare @NEWAPPEALDESCRIPTION nvarchar(255);
declare @SQL nvarchar(max);
if @CHANGEAGENTID is null
exec dbo.[USP_CHANGEAGENT_GETORCREATECHANGEAGENT] @CHANGEAGENTID output;
declare RECORDSOURCECURSOR cursor local fast_forward for
select
[MKTSEGMENTATIONACTIVATE].[ID],
[QUERYVIEWCATALOG].[OBJECTNAME],
[QUERYVIEWCATALOG].[PRIMARYKEYFIELD],
[MKTAPPEALRECORDSOURCE].[APPEALIDFIELD],
[MKTAPPEALRECORDSOURCE].[DESCRIPTIONFIELD],
[MKTSEGMENTATIONACTIVATE].[APPEALSYSTEMID],
[MKTSEGMENTATIONACTIVATE].[APPEALID],
[MKTSEGMENTATIONACTIVATE].[APPEALDESCRIPTION]
from dbo.[MKTSEGMENTATIONACTIVATE]
inner join dbo.[MKTAPPEALRECORDSOURCE] on [MKTAPPEALRECORDSOURCE].[ID] = [MKTSEGMENTATIONACTIVATE].[RECORDSOURCEID]
inner join dbo.[QUERYVIEWCATALOG] on [QUERYVIEWCATALOG].[ID] = [MKTAPPEALRECORDSOURCE].[QUERYVIEWCATALOGID]
where [MKTSEGMENTATIONACTIVATE].[SEGMENTATIONID] = @SEGMENTATIONID;
open RECORDSOURCECURSOR;
fetch next from RECORDSOURCECURSOR into @SEGMENTATIONACTIVATEID, @VIEWNAME, @PRIMARYKEYFIELD, @APPEALIDFIELD, @DESCRIPTIONFIELD, @APPEALSYSTEMID, @OLDAPPEALID, @OLDAPPEALDESCRIPTION;
while (@@FETCH_STATUS = 0)
begin
--Grab the current appeal name and description from the record source...
if len(isnull(@APPEALSYSTEMID, '')) >0
begin
set @SQL = 'select' + char(13) +
' @NEWAPPEALID = [' + @APPEALIDFIELD + '],' + char(13) +
' @NEWAPPEALDESCRIPTION = [' + @DESCRIPTIONFIELD + ']' + char(13) +
'from dbo.[' + @VIEWNAME + ']' + char(13) +
'where [' + @PRIMARYKEYFIELD + '] = @APPEALSYSTEMID';
exec sp_executesql @SQL, N'@NEWAPPEALID nvarchar(100) output, @NEWAPPEALDESCRIPTION nvarchar(255) output, @APPEALSYSTEMID nvarchar(36)', @NEWAPPEALID = @NEWAPPEALID output, @NEWAPPEALDESCRIPTION = @NEWAPPEALDESCRIPTION output, @APPEALSYSTEMID = @APPEALSYSTEMID;
--If the appeal name or description is different from what we have saved, then update ours...
if @OLDAPPEALID <> @NEWAPPEALID or @OLDAPPEALDESCRIPTION <> @NEWAPPEALDESCRIPTION
update dbo.[MKTSEGMENTATIONACTIVATE] set
[APPEALID] = @NEWAPPEALID,
[APPEALDESCRIPTION] = @NEWAPPEALDESCRIPTION,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = getdate()
where [ID] = @SEGMENTATIONACTIVATEID;
end
else--we do not have a system ID yet so try to get it based on appeal ID
begin
set @SQL = 'select' + char(13) +
' @APPEALSYSTEMID = cast([' + @PRIMARYKEYFIELD + '] as nvarchar(36)),' + char(13) +
' @NEWAPPEALDESCRIPTION = [' + @DESCRIPTIONFIELD + ']' + char(13) +
'from dbo.[' + @VIEWNAME + ']' + char(13) +
'where [' + @APPEALIDFIELD + '] = @OLDAPPEALID';
exec sp_executesql @SQL, N'@OLDAPPEALID nvarchar(100), @NEWAPPEALDESCRIPTION nvarchar(255) output, @APPEALSYSTEMID nvarchar(36) output', @OLDAPPEALID = @OLDAPPEALID, @NEWAPPEALDESCRIPTION = @NEWAPPEALDESCRIPTION output, @APPEALSYSTEMID = @APPEALSYSTEMID output;
--If we found an appeal system ID then update ours
if len(isnull(@APPEALSYSTEMID, '')) >0
update dbo.[MKTSEGMENTATIONACTIVATE] set
[APPEALSYSTEMID] = @APPEALSYSTEMID,
[APPEALDESCRIPTION] = @NEWAPPEALDESCRIPTION,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = getdate()
where [APPEALID] = @OLDAPPEALID
and [ID] = @SEGMENTATIONACTIVATEID;
end
fetch next from RECORDSOURCECURSOR into @SEGMENTATIONACTIVATEID, @VIEWNAME, @PRIMARYKEYFIELD, @APPEALIDFIELD, @DESCRIPTIONFIELD, @APPEALSYSTEMID, @OLDAPPEALID, @OLDAPPEALDESCRIPTION;
end
close RECORDSOURCECURSOR;
deallocate RECORDSOURCECURSOR;
return 0;