USP_MKTCONSTITUENTFILEIMPORT_MATCHWITHSEGMENT

Matches a constituent file import row with a segmentation segment ID using source code.

Parameters

Parameter Parameter Type Mode Description
@CONSTITUENTFILEIMPORTID uniqueidentifier IN

Definition

Copy


CREATE procedure dbo.[USP_MKTCONSTITUENTFILEIMPORT_MATCHWITHSEGMENT]
(
  @CONSTITUENTFILEIMPORTID uniqueidentifier
)
as
  set nocount on;

  declare @SEGMENTATIONID uniqueidentifier;
  declare @DATATABLE nvarchar(128);
  declare @SQL nvarchar(max);

  begin try  
    select
      @SEGMENTATIONID = [SEGMENTATIONID],
      @DATATABLE = dbo.[UFN_MKTCONSTITUENTFILEIMPORT_BUILDTABLENAME]([SEGMENTATIONID])
    from dbo.[MKTCONSTITUENTFILEIMPORTPROCESS]
    where [ID] = @CONSTITUENTFILEIMPORTID;


    /* Validate source code and assign segmentid */
    /* Since there is no source code map table created, must create a temp table relating segment ids to source code */
    create table #TEMPSOURCECODETABLE (
      [SEGMENTATIONSEGMENTID] uniqueidentifier not null,
      [SEGMENTATIONTESTSEGMENTID] uniqueidentifier,
      [SOURCECODE] nvarchar(50) collate database_default
    );

    /* Get all segments and test segments with their source codes. */
    insert into #TEMPSOURCECODETABLE ([SEGMENTATIONSEGMENTID], [SEGMENTATIONTESTSEGMENTID], [SOURCECODE])
      select
        [ID],
        null,
        dbo.[UFN_MKTSOURCECODE_BUILDCODE]([ID], null, null)
      from dbo.[MKTSEGMENTATIONSEGMENT]
      where [SEGMENTATIONID] = @SEGMENTATIONID

      union all

      select
        [MKTSEGMENTATIONSEGMENT].[ID],
        [MKTSEGMENTATIONTESTSEGMENT].[ID],
        dbo.[UFN_MKTSOURCECODE_BUILDCODE]([MKTSEGMENTATIONTESTSEGMENT].[ID], null, null)
      from dbo.[MKTSEGMENTATIONTESTSEGMENT]
      inner join dbo.[MKTSEGMENTATIONSEGMENT] on [MKTSEGMENTATIONSEGMENT].[ID] = [MKTSEGMENTATIONTESTSEGMENT].[SEGMENTID]
      where [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID] = @SEGMENTATIONID;


    /* Match the import file to the segments and test segments based on sourcecode. */
    set @SQL =  'update dbo.[' + @DATATABLE + '] set' + char(13) +
                '  [SEGMENTATIONSEGMENTID] = [TEMP].[SEGMENTATIONSEGMENTID],' + char(13) +
                '  [SEGMENTATIONTESTSEGMENTID] = [TEMP].[SEGMENTATIONTESTSEGMENTID]' + char(13) +
                'from dbo.[' + @DATATABLE + '] as [DATA]' + char(13) +
                'left join #TEMPSOURCECODETABLE as [TEMP] on [TEMP].[SOURCECODE] = [DATA].[SOURCECODE]' + char(13) +
                'where [DATA].[CONSTITUENTFILEIMPORTID] = @CONSTITUENTFILEIMPORTID';
    exec sp_executesql @SQL, N'@CONSTITUENTFILEIMPORTID uniqueidentifier', @CONSTITUENTFILEIMPORTID = @CONSTITUENTFILEIMPORTID;

    drop table #TEMPSOURCECODETABLE;
  end try

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

  return 0;