UFN_MKTSOURCECODE_BUILDCODE
Builds the full source code for a given segment ID.
Return
Return Type |
---|
nvarchar(50) |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@QUERYVIEWCATALOGID | uniqueidentifier | IN | |
@SOURCECODEITEMID | uniqueidentifier | IN |
Definition
Copy
CREATE function dbo.[UFN_MKTSOURCECODE_BUILDCODE]
(
@ID uniqueidentifier,
@QUERYVIEWCATALOGID uniqueidentifier = null,
@SOURCECODEITEMID uniqueidentifier = null
)
/*
builds the full source code for a given segment ID
if a query view catalog id is passed in, then it is used instead to get the list code (not used for vendor managed segments)
*/
returns nvarchar(50)
as
begin
declare @ACTIVE bit;
declare @TYPECODE tinyint;
declare @VALUE nvarchar(10);
declare @LISTCODE nvarchar(10);
declare @LISTPARTDEFINITIONVALUESID uniqueidentifier;
declare @DELIMITER nvarchar(1);
declare @LENGTH tinyint;
declare @SOURCECODE nvarchar(50);
declare @ITEMID uniqueidentifier;
declare @SEGMENTATIONID uniqueidentifier;
declare @PACKAGEID uniqueidentifier;
declare @CHANNELCODE tinyint;
declare @SEGMENTID uniqueidentifier;
declare @SOURCECODEID uniqueidentifier;
declare @SOURCECODEISHISTORICAL bit;
declare @RECORDTYPEID uniqueidentifier;
declare @ISTESTSEGMENT bit;
declare @ISWHITEMAILSEGMENT bit;
declare @LISTID uniqueidentifier;
declare @SOURCECODEPARTDEFINITIONID uniqueidentifier;
declare @SEQUENCE tinyint;
declare @MAXSEQUENCE tinyint;
set @SOURCECODE = '';
set @LISTCODE = '';
set @ISWHITEMAILSEGMENT = 0;
set @ISTESTSEGMENT = 0;
-- check to see if the ID is a white mail segment
-- (note that associating white mail segments with marketing efforts was ultimately scrapped and thus this will never return a row)
select
@ACTIVE = isnull([MKTSEGMENTATION].[ACTIVE], 0),
@SEGMENTATIONID = [MKTSEGMENTWHITEMAIL].[SEGMENTATIONID],
@PACKAGEID = null,
@SEGMENTID = null,
@CHANNELCODE = null,
@SOURCECODEID = [MKTSEGMENTWHITEMAIL].[SOURCECODEID],
@SOURCECODEISHISTORICAL = isnull([MKTSOURCECODE].[ISHISTORICAL], 0),
@ISWHITEMAILSEGMENT = 1
from dbo.[MKTSEGMENTWHITEMAIL]
left outer join dbo.[MKTSEGMENTATION] on [MKTSEGMENTATION].[ID] = [MKTSEGMENTWHITEMAIL].[SEGMENTATIONID]
left outer join dbo.[MKTSOURCECODE] on [MKTSOURCECODE].[ID] = [MKTSEGMENTATION].[SOURCECODEID]
where [MKTSEGMENTWHITEMAIL].[ID] = @ID;
if @ISWHITEMAILSEGMENT = 0
-- check to see if the ID is a test segment
select
@ACTIVE = [MKTSEGMENTATION].[ACTIVE],
@SEGMENTATIONID = [MKTSEGMENTATION].[ID],
@PACKAGEID = [MKTSEGMENTATIONTESTSEGMENT].[PACKAGEID],
@SEGMENTID = [MKTSEGMENTATIONSEGMENT].[SEGMENTID],
@CHANNELCODE = [MKTPACKAGE].[CHANNELCODE],
@SOURCECODEID = [MKTSEGMENTATION].[SOURCECODEID],
@SOURCECODEISHISTORICAL = isnull([MKTSOURCECODE].[ISHISTORICAL], 0),
@ISTESTSEGMENT = 1
from dbo.[MKTSEGMENTATIONTESTSEGMENT]
inner join dbo.[MKTSEGMENTATIONSEGMENT] on [MKTSEGMENTATIONSEGMENT].[ID] = [MKTSEGMENTATIONTESTSEGMENT].[SEGMENTID]
inner join dbo.[MKTPACKAGE] on [MKTPACKAGE].[ID] = [MKTSEGMENTATIONTESTSEGMENT].[PACKAGEID]
inner join dbo.[MKTSEGMENTATION] on [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID] = [MKTSEGMENTATION].[ID]
left outer join dbo.[MKTSOURCECODE] on [MKTSOURCECODE].[ID] = [MKTSEGMENTATION].[SOURCECODEID]
where [MKTSEGMENTATIONTESTSEGMENT].[ID] = @ID;
if @ISWHITEMAILSEGMENT = 0 and @ISTESTSEGMENT = 0
-- not a test segment, so grab the info from the segment
select
@ACTIVE = [MKTSEGMENTATION].[ACTIVE],
@SEGMENTATIONID = [MKTSEGMENTATION].[ID],
@PACKAGEID = [MKTSEGMENTATIONSEGMENT].[PACKAGEID],
@CHANNELCODE = [MKTPACKAGE].[CHANNELCODE],
@SEGMENTID = [MKTSEGMENTATIONSEGMENT].[SEGMENTID],
@SOURCECODEID = [MKTSEGMENTATION].[SOURCECODEID],
@SOURCECODEISHISTORICAL = isnull([MKTSOURCECODE].[ISHISTORICAL], 0)
from dbo.[MKTSEGMENTATIONSEGMENT]
inner join dbo.[MKTPACKAGE] on [MKTPACKAGE].[ID] = [MKTSEGMENTATIONSEGMENT].[PACKAGEID]
inner join dbo.[MKTSEGMENTATION] on [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID] = [MKTSEGMENTATION].[ID]
left outer join dbo.[MKTSOURCECODE] on [MKTSOURCECODE].[ID] = [MKTSEGMENTATION].[SOURCECODEID]
where [MKTSEGMENTATIONSEGMENT].[ID] = @ID;
if @SOURCECODEID is not null
if @SOURCECODEISHISTORICAL = 0
begin
if @ISWHITEMAILSEGMENT = 0
-- get the list code
if @QUERYVIEWCATALOGID is null
if @ACTIVE = 0
-- get the list code from the record source, list, or consolidated list
select
@LISTCODE = (case when exists (select [MKTCONSOLIDATEDQUERYVIEWSPEC].[CONSOLIDATEDQUERYVIEWCATALOGID] from dbo.[MKTCONSOLIDATEDQUERYVIEWSPEC] inner join dbo.[QUERYVIEWCATALOG] on [MKTCONSOLIDATEDQUERYVIEWSPEC].[CONSOLIDATEDQUERYVIEWCATALOGID] = [QUERYVIEWCATALOG].[ID] where [QUERYVIEWCATALOG].[RECORDTYPEID] = [RECORDTYPE].[ID])
then ''
else isnull([MKTLIST].[CODE], (select [MKTRECORDSOURCE].[CODE] from dbo.[MKTRECORDSOURCE] where [MKTRECORDSOURCE].[ID] = [MKTSEGMENT].[QUERYVIEWCATALOGID] and dbo.[UFN_MKTRECORDSOURCE_VALIDFORPRODUCT]([MKTRECORDSOURCE].[ID]) = 1))
end),
@LISTPARTDEFINITIONVALUESID = (case when exists (select [MKTCONSOLIDATEDQUERYVIEWSPEC].[CONSOLIDATEDQUERYVIEWCATALOGID] from dbo.[MKTCONSOLIDATEDQUERYVIEWSPEC] inner join dbo.[QUERYVIEWCATALOG] on [MKTCONSOLIDATEDQUERYVIEWSPEC].[CONSOLIDATEDQUERYVIEWCATALOGID] = [QUERYVIEWCATALOG].[ID] where [QUERYVIEWCATALOG].[RECORDTYPEID] = [RECORDTYPE].[ID])
then null
else isnull([MKTLIST].[PARTDEFINITIONVALUESID], (select [MKTRECORDSOURCE].[PARTDEFINITIONVALUESID] from dbo.[MKTRECORDSOURCE] where [MKTRECORDSOURCE].[ID] = [MKTSEGMENT].[QUERYVIEWCATALOGID] and dbo.[UFN_MKTRECORDSOURCE_VALIDFORPRODUCT]([MKTRECORDSOURCE].[ID]) = 1))
end)
from dbo.[MKTSEGMENT]
left join dbo.[MKTSEGMENTLIST] on [MKTSEGMENTLIST].[ID] = [MKTSEGMENT].[CURRENTSEGMENTLISTID]
left join dbo.[MKTLIST] on [MKTLIST].[ID] = [MKTSEGMENTLIST].[LISTID]
left join dbo.[IDSETREGISTER] on [MKTSEGMENT].[IDSETREGISTERID] = [IDSETREGISTER].[ID]
left join dbo.[RECORDTYPE] on [IDSETREGISTER].[RECORDTYPEID] = [RECORDTYPE].[ID]
where [MKTSEGMENT].[ID] = case when @ISWHITEMAILSEGMENT = 1 then @ID else @SEGMENTID end;
else
begin
select
@LISTID = (case when [CQV].[ID] is null
then isnull([MKTSEGMENTLIST].[LISTID], [MKTRECORDSOURCE].[ID])
else null
end)
from dbo.[MKTSEGMENT]
inner join dbo.[MKTRECORDSOURCE] on [MKTRECORDSOURCE].[ID] = [MKTSEGMENT].[QUERYVIEWCATALOGID]
left join dbo.[IDSETREGISTER] on [IDSETREGISTER].[ID] = [MKTSEGMENT].[IDSETREGISTERID]
left join dbo.[MKTSEGMENTLIST] on [MKTSEGMENTLIST].[ID] = [MKTSEGMENT].[CURRENTSEGMENTLISTID]
-- to figure out if the segment is based on the consolidated list or not...
left join dbo.[QUERYVIEWCATALOG] as [CQV] on [CQV].[RECORDTYPEID] = [IDSETREGISTER].[RECORDTYPEID] and [CQV].[ID] = dbo.[UFN_MKTRECORDSOURCE_GETCONSOLIDATEDQUERYVIEWID]([MKTRECORDSOURCE].[ID])
where [MKTSEGMENT].[ID] = case when @ISWHITEMAILSEGMENT = 1 then @ID else @SEGMENTID end
and dbo.[UFN_MKTRECORDSOURCE_VALIDFORPRODUCT]([MKTRECORDSOURCE].[ID]) = 1;
if @LISTID is not null
select
@LISTCODE = isnull([CODE], ''),
@LISTPARTDEFINITIONVALUESID = [PARTDEFINITIONVALUESID]
from dbo.[MKTSOURCECODEPART]
where [SEGMENTATIONID] = @SEGMENTATIONID
and [LISTID] = @LISTID;
else
begin
set @LISTCODE = '';
set @LISTPARTDEFINITIONVALUESID = null;
end
end
else
begin
-- get the list code from the QueryViewCatalogID passed in
set @LISTCODE = isnull((select [CODE] from dbo.[MKTLIST] inner join dbo.[MKTSEGMENTLIST] on [MKTSEGMENTLIST].[LISTID] = [MKTLIST].[ID] where [MKTSEGMENTLIST].[QUERYVIEWCATALOGID] = @QUERYVIEWCATALOGID),
(select [CODE] from dbo.[MKTRECORDSOURCE] where [ID] = @QUERYVIEWCATALOGID and dbo.[UFN_MKTRECORDSOURCE_VALIDFORPRODUCT]([MKTRECORDSOURCE].[ID]) = 1));
set @LISTPARTDEFINITIONVALUESID = isnull((select [PARTDEFINITIONVALUESID] from dbo.[MKTLIST] inner join dbo.[MKTSEGMENTLIST] on [MKTSEGMENTLIST].[LISTID] = [MKTLIST].[ID] where [MKTSEGMENTLIST].[QUERYVIEWCATALOGID] = @QUERYVIEWCATALOGID),
(select [PARTDEFINITIONVALUESID] from dbo.[MKTRECORDSOURCE] where [ID] = @QUERYVIEWCATALOGID and dbo.[UFN_MKTRECORDSOURCE_VALIDFORPRODUCT]([MKTRECORDSOURCE].[ID]) = 1));
end
select @MAXSEQUENCE = max([SEQUENCE]) from [MKTSOURCECODEITEM] where [SOURCECODEID] = @SOURCECODEID;
declare @PARTDEFINITIONVALUESID uniqueidentifier;
declare @DEFAULTUSERDEFINEDCODE nvarchar(50);
declare @USEDEFAULTUSERDEFINEDCODE bit;
declare PARTCURSOR cursor local fast_forward for
select
[MKTSOURCECODEITEM].[ID],
[MKTSOURCECODEPARTDEFINITION].[ITEMTYPECODE],
[MKTSOURCECODEITEM].[LENGTH],
[MKTSOURCECODEITEM].[MKTSOURCECODEPARTDEFINITIONID],
[MKTSOURCECODEITEM].[SEQUENCE]
from dbo.[MKTSOURCECODEITEM]
inner join dbo.[MKTSOURCECODEPARTDEFINITION] on [MKTSOURCECODEPARTDEFINITION].[ID] = [MKTSOURCECODEITEM].[MKTSOURCECODEPARTDEFINITIONID]
where [SOURCECODEID] = @SOURCECODEID
-- BTR CR292456-013008 1/30/2008
-- added this as an optional parameter allowing the caller to get the code for an
-- individual source code item, so that code needn't be duplicated in the
-- source code performance report
and (@SOURCECODEITEMID is null or [MKTSOURCECODEITEM].[ID] = @SOURCECODEITEMID)
order by [SEQUENCE];
open PARTCURSOR;
fetch next from PARTCURSOR into @ITEMID, @TYPECODE, @LENGTH, @SOURCECODEPARTDEFINITIONID, @SEQUENCE;
while (@@FETCH_STATUS = 0)
begin
set @PARTDEFINITIONVALUESID = null;
set @DEFAULTUSERDEFINEDCODE = '';
if @ISWHITEMAILSEGMENT = 1 and @TYPECODE in (0, 2, 3, 5, 6, 7)
begin
if @TYPECODE in (0, 5)
set @USEDEFAULTUSERDEFINEDCODE =
case when exists(select top 1 1 from dbo.[MKTSOURCECODEPART] where [SOURCECODEITEMID] = @ITEMID and [WHITEMAILSEGMENTID] = @ID) then 0 else 1 end;
if @TYPECODE = 0 and @USEDEFAULTUSERDEFINEDCODE = 1
begin
if @SEGMENTATIONID is not null
select
@DEFAULTUSERDEFINEDCODE = [CODE],
@PARTDEFINITIONVALUESID = [PARTDEFINITIONVALUESID]
from dbo.[MKTSEGMENTATION]
where [ID] = @SEGMENTATIONID
end
else if @TYPECODE = 5 and @USEDEFAULTUSERDEFINEDCODE = 1
begin
if @SEGMENTATIONID is not null
select
@DEFAULTUSERDEFINEDCODE = [CODE],
@PARTDEFINITIONVALUESID = [PARTDEFINITIONVALUESID]
from dbo.[MKTSOURCECODEPART]
where [SEGMENTATIONID] = @SEGMENTATIONID
and [SOURCECODEITEMID] = @ITEMID
and [SEGMENTATIONSEGMENTID] is null
and [SEGMENTATIONTESTSEGMENTID] is null
and [WHITEMAILSEGMENTID] is null
end
else
select
@DEFAULTUSERDEFINEDCODE = isnull([CODE], ''),
@PARTDEFINITIONVALUESID = [PARTDEFINITIONVALUESID]
from dbo.[MKTSOURCECODEPART]
where [SOURCECODEITEMID] = @ITEMID
and [WHITEMAILSEGMENTID] = @ID
end
else if @ISTESTSEGMENT = 1 and @TYPECODE = 5
begin
set @USEDEFAULTUSERDEFINEDCODE =
case when exists(select top 1 1 from dbo.[MKTSOURCECODEPART] where [SEGMENTATIONID] = @SEGMENTATIONID and [SOURCECODEITEMID] = @ITEMID and [SEGMENTATIONTESTSEGMENTID] = @ID) then 0 else 1 end;
if @USEDEFAULTUSERDEFINEDCODE = 1
select
@DEFAULTUSERDEFINEDCODE = [CODE],
@PARTDEFINITIONVALUESID = [PARTDEFINITIONVALUESID]
from dbo.[MKTSOURCECODEPART]
where [SEGMENTATIONID] = @SEGMENTATIONID
and [SOURCECODEITEMID] = @ITEMID
and [SEGMENTATIONSEGMENTID] is null
and [SEGMENTATIONTESTSEGMENTID] is null
and [WHITEMAILSEGMENTID] is null
else
select
@DEFAULTUSERDEFINEDCODE = [CODE],
@PARTDEFINITIONVALUESID = [PARTDEFINITIONVALUESID]
from dbo.[MKTSOURCECODEPART]
where [SEGMENTATIONID] = @SEGMENTATIONID
and [SOURCECODEITEMID] = @ITEMID
and [SEGMENTATIONTESTSEGMENTID] = @ID
end
else if @TYPECODE = 5
begin
set @USEDEFAULTUSERDEFINEDCODE =
case when exists(select top 1 1 from dbo.[MKTSOURCECODEPART] where [SEGMENTATIONID] = @SEGMENTATIONID and [SOURCECODEITEMID] = @ITEMID and [SEGMENTATIONSEGMENTID] = @ID) then 0 else 1 end;
if @USEDEFAULTUSERDEFINEDCODE = 1
select
@DEFAULTUSERDEFINEDCODE = [CODE],
@PARTDEFINITIONVALUESID = [PARTDEFINITIONVALUESID]
from dbo.[MKTSOURCECODEPART]
where [SEGMENTATIONID] = @SEGMENTATIONID
and [SOURCECODEITEMID] = @ITEMID
and [SEGMENTATIONSEGMENTID] is null
and [SEGMENTATIONTESTSEGMENTID] is null
and [WHITEMAILSEGMENTID] is null
else
select
@DEFAULTUSERDEFINEDCODE = [CODE],
@PARTDEFINITIONVALUESID = [PARTDEFINITIONVALUESID]
from dbo.[MKTSOURCECODEPART]
where [SEGMENTATIONID] = @SEGMENTATIONID
and [SOURCECODEITEMID] = @ITEMID
and [SEGMENTATIONSEGMENTID] = @ID
end
set @DELIMITER = '';
if @PARTDEFINITIONVALUESID is null
begin
-- get the part definition values ID for itemtype if not already set
set @PARTDEFINITIONVALUESID =
case
when @TYPECODE = 0 then (select [PARTDEFINITIONVALUESID] from dbo.[MKTSEGMENTATION] where [ID] = @SEGMENTATIONID)
when @TYPECODE = 1 then (case when @ISWHITEMAILSEGMENT = 1 then (select [PARTDEFINITIONVALUESID] from dbo.[MKTSEGMENT] where [ID] = @ID) when @ISTESTSEGMENT = 1 then (select [PARTDEFINITIONVALUESID] from dbo.[MKTSEGMENTATIONTESTSEGMENT] where [ID] = @ID) else (select [PARTDEFINITIONVALUESID] from dbo.[MKTSEGMENTATIONSEGMENT] where [ID] = @ID) end)
when @TYPECODE = 2 and @ACTIVE = 0 then (select [PARTDEFINITIONVALUESID] from dbo.[MKTPACKAGE] where [ID] = @PACKAGEID)
when @TYPECODE = 2 and @ACTIVE = 1 then (select [PARTDEFINITIONVALUESID] from dbo.[MKTSEGMENTATIONPACKAGE] where [SEGMENTATIONID] = @SEGMENTATIONID and [PACKAGEID] = @PACKAGEID)
when @TYPECODE = 3 and @ACTIVE = 0 then (select [CHANNELPARTDEFINITIONVALUESID] from dbo.[MKTPACKAGE] where [ID] = @PACKAGEID)
when @TYPECODE = 3 and @ACTIVE = 1 then (select [CHANNELPARTDEFINITIONVALUESID] from dbo.[MKTSEGMENTATIONPACKAGE] where [SEGMENTATIONID] = @SEGMENTATIONID and [PACKAGEID] = @PACKAGEID)
when @TYPECODE = 6 then (select @LISTPARTDEFINITIONVALUESID)
when @TYPECODE = 7 then (case when @ISTESTSEGMENT = 1 then (select [TESTPARTDEFINITIONVALUESID] from dbo.[MKTSEGMENTATIONTESTSEGMENT] where [ID] = @ID) else (select [TESTPARTDEFINITIONVALUESID] from dbo.[MKTSEGMENTATIONSEGMENT] where [ID] = @ID) end)
end
end
-- set true if value is a valid value for the given source code
declare @VALIDVALUE bit;
set @VALIDVALUE =
case when @ISWHITEMAILSEGMENT = 1 and (@TYPECODE in (0, 5) and @SEGMENTATIONID is null)
then 1 -- white mail segments will have blank values for these parts (i.e. @PARTDEFINITIONVALUESID will be null)
else
case when exists(select top 1 1
from dbo.[MKTSOURCECODEVALIDPARTVALUES]
inner join dbo.[MKTSOURCECODEITEM] on [MKTSOURCECODEITEM].[ID] = [MKTSOURCECODEVALIDPARTVALUES].[MKTSOURCECODEITEMID]
where [MKTSOURCECODEITEM].[SOURCECODEID] = @SOURCECODEID
and [MKTSOURCECODEVALIDPARTVALUES].[MKTSOURCECODEPARTDEFINITIONVALUESID] = @PARTDEFINITIONVALUESID)
then 1 else 0 end
end;
set @SOURCECODE = @SOURCECODE +
(select right(replicate('_', @LENGTH) +
(case
-- 0 = mailing
when @TYPECODE = 0
then (case when @ISWHITEMAILSEGMENT = 1 then @DEFAULTUSERDEFINEDCODE else (select isnull([CODE], '') from dbo.[MKTSEGMENTATION] where [ID] = @SEGMENTATIONID) end)
-- 1 = segment or test segment
when (@TYPECODE = 1 and @ACTIVE = 0 and @VALIDVALUE = 1)
then (case when @ISWHITEMAILSEGMENT = 1 then (select isnull([CODE], '') from dbo.[MKTSEGMENT] where [ID] = @ID) when @ISTESTSEGMENT = 1 then (select isnull([CODE], '') from dbo.[MKTSEGMENTATIONTESTSEGMENT] where [ID] = @ID) else (select isnull([CODE], '') from dbo.[MKTSEGMENTATIONSEGMENT] where [ID] = @ID) end)
when (@TYPECODE = 1 and @ACTIVE = 1)
then (case when @ISWHITEMAILSEGMENT = 1 then (select isnull([CODE], '') from dbo.[MKTSEGMENT] where [ID] = @ID) when @ISTESTSEGMENT = 1 then (select isnull([CODE], '') from dbo.[MKTSEGMENTATIONTESTSEGMENT] where [ID] = @ID) else (select isnull([CODE], '') from dbo.[MKTSEGMENTATIONSEGMENT] where [ID] = @ID) end)
-- 2 = package, inactive
when (@TYPECODE = 2 and @ACTIVE = 0 and @VALIDVALUE = 1)
then (case when @ISWHITEMAILSEGMENT = 1 then @DEFAULTUSERDEFINEDCODE else (select isnull([CODE], '') from dbo.[MKTPACKAGE] where [ID] = @PACKAGEID) end)
-- 2 = package, active
when (@TYPECODE = 2 and @ACTIVE = 1)
then (case when @ISWHITEMAILSEGMENT = 1 then @DEFAULTUSERDEFINEDCODE else (select isnull([CODE], '') from dbo.[MKTSEGMENTATIONPACKAGE] where [SEGMENTATIONID] = @SEGMENTATIONID and [PACKAGEID] = @PACKAGEID) end)
-- 3 = channel
when (@TYPECODE = 3 and @ACTIVE = 0 and @VALIDVALUE = 1)
then (case when @ISWHITEMAILSEGMENT = 1 then @DEFAULTUSERDEFINEDCODE else (select isnull([CHANNELSOURCECODE], '') from dbo.[MKTPACKAGE] where [ID] = @PACKAGEID) end)
when (@TYPECODE = 3 and @ACTIVE = 1)
then (case when @ISWHITEMAILSEGMENT = 1 then @DEFAULTUSERDEFINEDCODE else (select isnull([CHANNELSOURCECODE], '') from dbo.[MKTSEGMENTATIONPACKAGE] where [SEGMENTATIONID] = @SEGMENTATIONID and [PACKAGEID] = @PACKAGEID) end)
-- 4 = date
when (@TYPECODE = 4)
then (select isnull([CODE], '') from dbo.[MKTSOURCECODEPART] where [SEGMENTATIONID] = @SEGMENTATIONID and [SOURCECODEITEMID] = @ITEMID and [SEGMENTATIONSEGMENTID] = @ID)
-- 5 = user defined
when (@TYPECODE = 5 and @ISWHITEMAILSEGMENT = 1)
then (select case when @USEDEFAULTUSERDEFINEDCODE = 0 then (select isnull([MKTSOURCECODEPART].[CODE], '') from [MKTSOURCECODEPART] where [SOURCECODEITEMID] = @ITEMID and [WHITEMAILSEGMENTID] = @ID) else @DEFAULTUSERDEFINEDCODE end)
when (@TYPECODE = 5 and @ISTESTSEGMENT = 1)
then (select case when @USEDEFAULTUSERDEFINEDCODE = 0 then (select isnull([MKTSOURCECODEPART].[CODE], '') from [MKTSOURCECODEPART] where [SEGMENTATIONID] = @SEGMENTATIONID and [SOURCECODEITEMID] = @ITEMID and [SEGMENTATIONTESTSEGMENTID] = @ID) else @DEFAULTUSERDEFINEDCODE end)
when (@TYPECODE = 5 and @ISWHITEMAILSEGMENT = 0 and @ISTESTSEGMENT = 0)
then (select case when @USEDEFAULTUSERDEFINEDCODE = 0 then (select isnull([MKTSOURCECODEPART].[CODE], '') from [MKTSOURCECODEPART] where [SEGMENTATIONID] = @SEGMENTATIONID and [SOURCECODEITEMID] = @ITEMID and [SEGMENTATIONSEGMENTID] = @ID) else @DEFAULTUSERDEFINEDCODE end)
-- 6 = list
when @TYPECODE = 6
then '**********' + case when @ISWHITEMAILSEGMENT = 1 then @DEFAULTUSERDEFINEDCODE else @LISTCODE end
-- 7 = test segment
when @TYPECODE = 7
then (case when @ISWHITEMAILSEGMENT = 1 then @DEFAULTUSERDEFINEDCODE when @ISTESTSEGMENT = 1 then (select isnull([TESTSEGMENTCODE], '') from dbo.[MKTSEGMENTATIONTESTSEGMENT] where [ID] = @ID) else (select isnull([TESTSEGMENTCODE], '') from dbo.[MKTSEGMENTATIONSEGMENT] where [ID] = @ID) end)
else
replicate('_', @LENGTH)
end), @LENGTH))
select
@DELIMITER = isnull([MKTSOURCECODEPARTDEFINITIONVALUES].[DELIM], '')
from dbo.[MKTSOURCECODEPARTDEFINITIONVALUES]
where [MKTSOURCECODEPARTDEFINITIONVALUES].[ID] = @PARTDEFINITIONVALUESID;
-- don't add the delimiter on the end of the source code
if @SEQUENCE < @MAXSEQUENCE
set @SOURCECODE = @SOURCECODE + @DELIMITER;
fetch next from PARTCURSOR into @ITEMID, @TYPECODE, @LENGTH, @SOURCECODEPARTDEFINITIONID, @SEQUENCE;
end
close PARTCURSOR;
deallocate PARTCURSOR;
end
else -- @SOURCECODEISHISTORICAL = 1
if @ISWHITEMAILSEGMENT = 1
select @SOURCECODE = [SOURCECODE]
from dbo.[MKTSOURCECODEMAP]
where [SEGMENTATIONID] = @SEGMENTATIONID and [WHITEMAILSEGMENTID] = @ID;
else if @ISTESTSEGMENT = 1
select @SOURCECODE = [SOURCECODE]
from dbo.[MKTSOURCECODEMAP]
where [SEGMENTATIONID] = @SEGMENTATIONID and [SEGMENTATIONTESTSEGMENTID] = @ID;
else
select @SOURCECODE = [SOURCECODE]
from dbo.[MKTSOURCECODEMAP]
where [SEGMENTATIONID] = @SEGMENTATIONID and [SEGMENTATIONSEGMENTID] = @ID and [SEGMENTATIONTESTSEGMENTID] is null;
return @SOURCECODE;
end