USP_MKTSEGMENTATIONEXPORTPROCESS_CREATETEMPIDTABLE
Creates a temporary table used when exporting data for a marketing effort.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@TEMPIDTABLENAME | nvarchar(128) | IN | |
@SEGMENTATIONID | uniqueidentifier | IN | |
@RECORDSOURCEID | uniqueidentifier | IN | |
@MARKETINGRECORDTYPECODE | tinyint | IN |
Definition
Copy
CREATE procedure dbo.[USP_MKTSEGMENTATIONEXPORTPROCESS_CREATETEMPIDTABLE]
(
@TEMPIDTABLENAME nvarchar(128),
@SEGMENTATIONID uniqueidentifier,
@RECORDSOURCEID uniqueidentifier,
@MARKETINGRECORDTYPECODE tinyint
)
with execute as owner
as
declare @MAILINGTYPECODE tinyint;
declare @DONORIDDATATYPE nvarchar(128);
declare @REVENUEIDDATATYPE nvarchar(128);
declare @MEMBERSHIPIDDATATYPE nvarchar(128);
declare @SPONSORSHIPIDDATATYPE nvarchar(128);
declare @COLUMNS nvarchar(max);
-- sometimes, the finder number field from the temporary ID table has to be added to the export definition as an additional output field
-- however, just calling it FINDERNUMBER can cause collisions with fields called FINDERNUMBER in the export definition's
-- query views; that can cause field names to change if "use field names for one-to-one fields" is set
-- so append the segmentation ID to make this collision unlikely
declare @SUFFIX nvarchar(37) = '_' + replace(convert(nvarchar(36), @SEGMENTATIONID), '-', '_');
set nocount on;
select @MAILINGTYPECODE = [MAILINGTYPECODE] from dbo.[MKTSEGMENTATION] where [ID] = @SEGMENTATIONID;
select
@DONORIDDATATYPE = [DONOR].[PRIMARYKEYTYPENAME],
@REVENUEIDDATATYPE = isnull([REVENUE].[PRIMARYKEYTYPENAME], ''),
@MEMBERSHIPIDDATATYPE = isnull([MEMBERSHIP].[PRIMARYKEYTYPENAME], ''),
@SPONSORSHIPIDDATATYPE = isnull([SPONSORSHIP].[PRIMARYKEYTYPENAME], '')
from dbo.[MKTRECORDSOURCE]
inner join dbo.[QUERYVIEWCATALOG] as [DONOR] on [DONOR].[ID] = [MKTRECORDSOURCE].[ID]
left outer join dbo.[MKTGIFTRECORDSOURCE] on [MKTGIFTRECORDSOURCE].[ID] = [DONOR].[ID]
left outer join dbo.[QUERYVIEWCATALOG] as [REVENUE] on [REVENUE].[ID] = [MKTGIFTRECORDSOURCE].[QUERYVIEWCATALOGID]
left outer join dbo.[MKTMEMBERSHIPRECORDSOURCE] on [MKTMEMBERSHIPRECORDSOURCE].[ID] = [DONOR].[ID]
left outer join dbo.[QUERYVIEWCATALOG] as [MEMBERSHIP] on [MEMBERSHIP].[ID] = [MKTMEMBERSHIPRECORDSOURCE].[QUERYVIEWCATALOGID]
left outer join dbo.[MKTSPONSORSHIPRECORDSOURCE] on [MKTSPONSORSHIPRECORDSOURCE].[ID] = [DONOR].[ID]
left outer join dbo.[QUERYVIEWCATALOG] as [SPONSORSHIP] on [SPONSORSHIP].[ID] = [MKTSPONSORSHIPRECORDSOURCE].[QUERYVIEWCATALOGID]
where [MKTRECORDSOURCE].[ID] = @RECORDSOURCEID
set @COLUMNS =
' [FINDERNUMBER' + @SUFFIX + '] bigint' + (case @MAILINGTYPECODE when 2 then '' else ' primary key' end) + ',' + char(13) +
(case @MAILINGTYPECODE when 1 then ' [REVENUEID] ' + @REVENUEIDDATATYPE + ',' + char(13) else '' end) +
(case @MAILINGTYPECODE when 2 then ' [MEMBERSHIPID] ' + @MEMBERSHIPIDDATATYPE + ',' + char(13) else '' end) +
(case @MAILINGTYPECODE when 3 then ' [SPONSORSHIPID] ' + @SPONSORSHIPIDDATATYPE + ',' + char(13) else '' end) +
(case @MAILINGTYPECODE when 5 then ' [REVENUEID] ' + @REVENUEIDDATATYPE + ',' + char(13) else '' end) +
' [DONORID] ' + @DONORIDDATATYPE + ',' + char(13) +
(case @MAILINGTYPECODE when 2 then ' [ISMEMBER] bit,' + char(13) else '' end) +
' [LISTDONORID] uniqueidentifier,' + char(13) +
' [PACKAGEID] uniqueidentifier,' + char(13) +
' [WORDTEMPLATEID] uniqueidentifier,' + char(13) +
' [EXCLUDESPOUSE] bit not null default 0,' + char(13) +
' [BACKOFFICESYSTEMID] integer' +
(case @MAILINGTYPECODE when 2 then ',' + char(13) + ' constraint PK_' + @TEMPIDTABLENAME + ' primary key clustered ([FINDERNUMBER' + @SUFFIX + '], [ISMEMBER])' else '' end);
exec dbo.[USP_MKTSEGMENTATIONEXPORTPROCESS_CREATETABLE] @TEMPIDTABLENAME, @COLUMNS;
return 0;