USP_MKTSEGMENTATIONACTIVATE_CREATETEMPSEGMENTTABLE

Creates a temporary table for activating a segment.

Parameters

Parameter Parameter Type Mode Description
@SEGMENTID uniqueidentifier IN
@TEMPSEGMENTTABLENAME nvarchar(128) INOUT

Definition

Copy


CREATE procedure dbo.[USP_MKTSEGMENTATIONACTIVATE_CREATETEMPSEGMENTTABLE]
(
  @SEGMENTID uniqueidentifier,
  @TEMPSEGMENTTABLENAME nvarchar(128) = null output
)
as
  set nocount on;

  declare @SEGMENTATIONID uniqueidentifier;
  declare @MAILINGTYPECODE tinyint;
  declare @RECORDSOURCEID uniqueidentifier;
  declare @DONORIDDATATYPE nvarchar(128);
  declare @REVENUEIDDATATYPE nvarchar(128);
  declare @SQL nvarchar(max);

  begin try
    select
      @SEGMENTATIONID = [MKTSEGMENTATION].[ID],
      @MAILINGTYPECODE = [MKTSEGMENTATION].[MAILINGTYPECODE],
      @RECORDSOURCEID = [MKTSEGMENT].[QUERYVIEWCATALOGID]
    from dbo.[MKTSEGMENTATIONSEGMENT]
    inner join dbo.[MKTSEGMENTATION] on [MKTSEGMENTATION].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID]
    inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID]
    where [MKTSEGMENTATIONSEGMENT].[ID] = @SEGMENTID;

    set @DONORIDDATATYPE = dbo.[UFN_MKTSEGMENTATIONACTIVATE_GETDONORIDDATATYPE](@SEGMENTATIONID)
    if @MAILINGTYPECODE in (1, 5)
      set @REVENUEIDDATATYPE = dbo.[UFN_MKTSEGMENTATIONACTIVATE_GETIDSETIDDATATYPE](@SEGMENTATIONID)

    if len(isnull(@TEMPSEGMENTTABLENAME,'')) = 0
      set @TEMPSEGMENTTABLENAME = dbo.[UFN_MKTSEGMENTATIONACTIVATE_MAKETEMPSEGMENTTABLENAME](@SEGMENTID);

    if exists(select 1 from [TEMPDB].[INFORMATION_SCHEMA].[TABLES] where [TABLE_SCHEMA] = 'dbo' and [TABLE_NAME] = @TEMPSEGMENTTABLENAME) or exists(select 1 from [INFORMATION_SCHEMA].[TABLES] where [TABLE_SCHEMA] = 'dbo' and [TABLE_NAME] = @TEMPSEGMENTTABLENAME)
      exec ('drop table dbo.[' + @TEMPSEGMENTTABLENAME + ']');

    /* Create the temp segment table */
    set @SQL = 'create table [dbo].[' + @TEMPSEGMENTTABLENAME + '] (' + char(13) +
               '  [ID] ' + (case when @MAILINGTYPECODE in (1, 5) then @REVENUEIDDATATYPE else @DONORIDDATATYPE end) + ' not null,' + char(13) +
               (case when @MAILINGTYPECODE in (1, 5) and dbo.[UFN_MKTRECORDSOURCE_VALIDFORBBEC](@RECORDSOURCEID) = 1 then '[DONORID] ' + @DONORIDDATATYPE + ' not null,' + char(13) else '' end) + 
               '  [ROW] [int] not null identity (1, 1)' +
               (case when @MAILINGTYPECODE in (1, 5) then '' else ',' + char(13) + '  constraint [PK_' + replace(@TEMPSEGMENTTABLENAME, '#', '') + '] primary key clustered ([ID] asc) with (PAD_INDEX = off, IGNORE_DUP_KEY = off)' end) + char(13) +
               ');'
               + char(13) +
               'create unique nonclustered index [IX_' + replace(@TEMPSEGMENTTABLENAME, '#', '') + '_ROW] on [dbo].[' + @TEMPSEGMENTTABLENAME + '] ([ROW] asc) with (PAD_INDEX  = off, SORT_IN_TEMPDB = off, DROP_EXISTING = off, IGNORE_DUP_KEY = off, ONLINE = off);';
    exec (@SQL);
  end try

  begin catch
    exec dbo.USP_RAISE_ERROR;
    return 1;
  end catch

  return 0;