USP_COMMUNICATION_MKTSEGMENTATIONACTIVATIONSTATUS_HASOUTPUT
This function will determine whether or not the given segmentation activation status has output.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SEGMENTATIONACTIVATIONSTATUSID | uniqueidentifier | IN | |
@CHANNELCODE | tinyint | IN |
Definition
Copy
CREATE procedure dbo.USP_COMMUNICATION_MKTSEGMENTATIONACTIVATIONSTATUS_HASOUTPUT
(
@SEGMENTATIONACTIVATIONSTATUSID uniqueidentifier,
@CHANNELCODE tinyint = null
)
as
begin
-- @CHANNELCODE pertains to the channel code on the MKTPackage record
-- 0 - Mail
-- 1 - Email
-- null - Either mail or email
declare @HASOUTPUT bit = 0;
declare @HASMULTIPLELETTEROUTPUT bit = 0;
declare @CONTINUE bit = 1;
declare @TABLENAME nvarchar(100);
declare @SQL as nvarchar(max);
declare OUTPUTTABLECURSOR cursor local fast_forward for
select
TABLENAME
from dbo.MKTSEGMENTATIONACTIVATEEXPORTLINK
inner join dbo.BUSINESSPROCESSOUTPUT
on MKTSEGMENTATIONACTIVATEEXPORTLINK.EXPORTPROCESSSTATUSID = BUSINESSPROCESSOUTPUT.BUSINESSPROCESSSTATUSID
where MKTSEGMENTATIONACTIVATEEXPORTLINK.ID = @SEGMENTATIONACTIVATIONSTATUSID
and upper(BUSINESSPROCESSOUTPUT.TABLEKEY) <> upper(cast(BUSINESSPROCESSOUTPUT.BUSINESSPROCESSSTATUSID as nvarchar(36)));
open OUTPUTTABLECURSOR;
fetch next from OUTPUTTABLECURSOR into @TABLENAME;
while (@@fetch_status = 0) and @CONTINUE = 1
begin
declare @COUNT int = 0;
declare @LETTERCOUNT int = 0;
set @SQL =
'select ' + char(13) +
' @COUNT = count(*), ' + char(13) +
' @LETTERCOUNT = count(distinct [OUTPUT].PACKAGEID) ' + char(13) +
'from dbo.' + @TABLENAME + ' [OUTPUT] ' + char(13) +
'inner join dbo.MKTPACKAGE ' + char(13) +
' on [OUTPUT].PACKAGEID = MKTPACKAGE.ID ' + char(13);
if @CHANNELCODE is not null
set @SQL = @SQL + 'where MKTPACKAGE.CHANNELCODE = ' + cast(@CHANNELCODE as nvarchar(1));
exec sp_executesql @SQL, N'@COUNT int output, @LETTERCOUNT int output', @COUNT = @COUNT output, @LETTERCOUNT = @LETTERCOUNT output;
if @COUNT > 0
begin
set @HASOUTPUT = 1;
if @LETTERCOUNT > 1
set @HASMULTIPLELETTEROUTPUT = 1;
set @CONTINUE = 0;
end
fetch next from OUTPUTTABLECURSOR into @TABLENAME;
end
--When a cursor is used, it should be explicitly closed/deallocated in case of blocking or USP running long
close OUTPUTTABLECURSOR;
deallocate OUTPUTTABLECURSOR;
select
@HASOUTPUT as HASOUTPUT,
@HASMULTIPLELETTEROUTPUT as HASMULTIPLELETTEROUTPUT;
end