USP_DATALIST_MKTSEGMENTATION_EXCLUSIONSSTATUS
Returns the output list of a marketing effort exclusions business process.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@EFFORTEXCLUSIONPROCESSSTATUSID | uniqueidentifier | IN | Input parameter indicating the context ID for the data list. |
Definition
Copy
CREATE procedure dbo.[USP_DATALIST_MKTSEGMENTATION_EXCLUSIONSSTATUS]
(
@EFFORTEXCLUSIONPROCESSSTATUSID uniqueidentifier
)
as
set nocount on;
declare @SEGMENTATIONID uniqueidentifier;
declare @ENDEDON datetime;
declare @NUMBERPROCESSED int;
declare @SEGMENTCALCULATEPROCESSSTATUSID uniqueidentifier;
declare @TABLENAME nvarchar(128);
declare @SQL nvarchar(max);
declare @MKTSEGMENTATIONEXCLUSIONSPROCESSID uniqueidentifier;
--Left join to both process tables so we can use this datalist from both the business process status page and the report page...
select
@SEGMENTATIONID = isnull([MKTSEGMENTATIONEXCLUSIONSPROCESS].[SEGMENTATIONID], [MKTSEGMENTATIONSEGMENTCALCULATEPROCESS].[SEGMENTATIONID]),
@ENDEDON = [BUSINESSPROCESSSTATUS].[ENDEDON],
@NUMBERPROCESSED = [BUSINESSPROCESSSTATUS].[NUMBERPROCESSED],
@MKTSEGMENTATIONEXCLUSIONSPROCESSID = [MKTSEGMENTATIONEXCLUSIONSPROCESS].[ID]
from dbo.[BUSINESSPROCESSSTATUS]
left join dbo.[MKTSEGMENTATIONEXCLUSIONSPROCESS] on [MKTSEGMENTATIONEXCLUSIONSPROCESS].[ID] = [BUSINESSPROCESSSTATUS].[BUSINESSPROCESSPARAMETERSETID]
left join dbo.[MKTSEGMENTATIONSEGMENTCALCULATEPROCESS] on [MKTSEGMENTATIONSEGMENTCALCULATEPROCESS].[ID] = [BUSINESSPROCESSSTATUS].[BUSINESSPROCESSPARAMETERSETID]
where [BUSINESSPROCESSSTATUS].[ID] = @EFFORTEXCLUSIONPROCESSSTATUSID;
--Grab the segment counts status ID that was started before the exclusions process since the output table is now linked to the segment counts process...
select top 1
@SEGMENTCALCULATEPROCESSSTATUSID = [BUSINESSPROCESSSTATUS].[ID]
from dbo.[MKTSEGMENTATIONSEGMENTCALCULATEPROCESS]
inner join dbo.[MKTSEGMENTATIONSEGMENTCALCULATEPROCESSSTATUS] on [MKTSEGMENTATIONSEGMENTCALCULATEPROCESSSTATUS].[PARAMETERSETID] = [MKTSEGMENTATIONSEGMENTCALCULATEPROCESS].[ID]
inner join dbo.[BUSINESSPROCESSSTATUS] on [BUSINESSPROCESSSTATUS].[ID] = [MKTSEGMENTATIONSEGMENTCALCULATEPROCESSSTATUS].[ID]
where [MKTSEGMENTATIONSEGMENTCALCULATEPROCESS].[SEGMENTATIONID] = @SEGMENTATIONID
and [BUSINESSPROCESSSTATUS].[STATUSCODE] = 0
and [BUSINESSPROCESSSTATUS].[STARTEDON] < @ENDEDON
order by [BUSINESSPROCESSSTATUS].[ENDEDON] desc;
if @MKTSEGMENTATIONEXCLUSIONSPROCESSID is null
begin
-- The status id that was passed in was to the segmentation segment calculate process, not the
-- segmentation exclusion process, so the previous @NUMBERPROCESSED is the number of segments
-- processed. Grab the correct value for @NUMBERPROCESSED here.
select
@TABLENAME = [BUSINESSPROCESSOUTPUT].[TABLENAME]
from dbo.[BUSINESSPROCESSSTATUS]
inner join dbo.[MKTSEGMENTATIONSEGMENTCALCULATEPROCESS] on [MKTSEGMENTATIONSEGMENTCALCULATEPROCESS].[ID] = [BUSINESSPROCESSSTATUS].[BUSINESSPROCESSPARAMETERSETID]
inner join dbo.[BUSINESSPROCESSOUTPUT] on [BUSINESSPROCESSOUTPUT].[BUSINESSPROCESSSTATUSID] = [BUSINESSPROCESSSTATUS].[ID]
where [BUSINESSPROCESSSTATUS].[ID] = @SEGMENTCALCULATEPROCESSSTATUSID
and [BUSINESSPROCESSOUTPUT].[TABLEKEY] = 'EFFORTEXCLUSIONS';
set @SQL = 'select @NUMBERPROCESSED = count(*) from dbo.[' + @TABLENAME + ']';
exec sp_executesql @SQL, N'@NUMBERPROCESSED int output', @NUMBERPROCESSED = @NUMBERPROCESSED output;
end
select
[BUSINESSPROCESSSTATUS].[ID],
[BUSINESSPROCESSSTATUS].[BUSINESSPROCESSPARAMETERSETID],
[BUSINESSPROCESSSTATUS].[BUSINESSPROCESSCATALOGID],
[BUSINESSPROCESSOUTPUT].[TABLEKEY],
[MKTSEGMENTATIONSEGMENTCALCULATEPROCESS].[NAME],
@NUMBERPROCESSED,
[BUSINESSPROCESSSTATUS].[STATUS],
[BUSINESSPROCESSSTATUS].[STARTEDON]
from dbo.[BUSINESSPROCESSSTATUS]
inner join dbo.[MKTSEGMENTATIONSEGMENTCALCULATEPROCESS] on [MKTSEGMENTATIONSEGMENTCALCULATEPROCESS].[ID] = [BUSINESSPROCESSSTATUS].[BUSINESSPROCESSPARAMETERSETID]
inner join dbo.[BUSINESSPROCESSOUTPUT] on [BUSINESSPROCESSOUTPUT].[BUSINESSPROCESSSTATUSID] = [BUSINESSPROCESSSTATUS].[ID]
where [BUSINESSPROCESSSTATUS].[ID] = @SEGMENTCALCULATEPROCESSSTATUSID
and [BUSINESSPROCESSOUTPUT].[TABLEKEY] = 'EFFORTEXCLUSIONS';
return 0;