USP_MKTSOURCEANALYSISRULEEXCLUSION_POPULATETABLE

Populates the SAR data exclusion table.

Parameters

Parameter Parameter Type Mode Description
@RECORDSOURCEID uniqueidentifier IN
@SEGMENTATIONEXCLUSIONID uniqueidentifier IN
@SEGMENTATIONID uniqueidentifier IN

Definition

Copy


CREATE procedure dbo.USP_MKTSOURCEANALYSISRULEEXCLUSION_POPULATETABLE
(
  @RECORDSOURCEID uniqueidentifier,
  @SEGMENTATIONEXCLUSIONID uniqueidentifier,
  @SEGMENTATIONID uniqueidentifier  
)
as
  set nocount on;

  declare @MAILEXCLTABLENAME nvarchar(128) = dbo.[UFN_MKTSEGMENTATIONACTIVATEEXCLUSION_MAKETABLENAME](@SEGMENTATIONID);
  declare @SQL nvarchar(max);
  declare @RUN bit = 0;

  set @SQL = 'select @RUN = (case when exists(' + char(13) +
             '                 select *' + char(13) +
             '                 from dbo.[' + @MAILEXCLTABLENAME + ']' + char(13) +
             '                 where [DONORQUERYVIEWCATALOGID] = @RECORDSOURCEID' + char(13) +
             '                 and [SEGMENTATIONEXCLUSIONID] = @SEGMENTATIONEXCLUSIONID)' + char(13) +
             '               then 1 else 0 end)';
  exec sp_executesql @SQL, N'@SEGMENTATIONEXCLUSIONID uniqueidentifier, @RECORDSOURCEID uniqueidentifier, @RUN bit output',  @SEGMENTATIONEXCLUSIONID =  @SEGMENTATIONEXCLUSIONID, @RECORDSOURCEID = @RECORDSOURCEID, @RUN = @RUN output;

  if @RUN = 1
    begin
      declare @SARTABLENAME nvarchar(128) = dbo.[UFN_MKTSOURCEANALYSISRULE_MAKETABLENAME](@RECORDSOURCEID);
      declare @SAREXCLTABLENAME nvarchar(128) = dbo.[UFN_MKTSOURCEANALYSISRULEEXCLUSION_MAKETABLENAME](@RECORDSOURCEID);
      declare @VALUESSQL nvarchar(max) = '';
      declare @INSERTCOLUMNS nvarchar(max) = '';
      declare @COLUMNNAME nvarchar(255);

      --Build the column strings...

      declare COLUMNCURSOR cursor local fast_forward for
        select [COLUMN_NAME]
        from INFORMATION_SCHEMA.COLUMNS
        where [TABLE_SCHEMA] = 'dbo'
        and [TABLE_NAME] = @SARTABLENAME
        and [COLUMN_NAME] <> 'ID';  --ID is an identity field in both SAR tables so exclude it


      open COLUMNCURSOR;
      fetch next from COLUMNCURSOR into @COLUMNNAME;

      while(@@fetch_status = 0)
      begin
        set @INSERTCOLUMNS += ', [' +@COLUMNNAME + ']';
        set @VALUESSQL += ', [SAR].[' +@COLUMNNAME + ']';

        fetch next from COLUMNCURSOR into @COLUMNNAME;
      end

      close COLUMNCURSOR;
      deallocate COLUMNCURSOR;

      --Copy data from the SAR table to the SAR exclusion table...

      set @SQL = 'insert into dbo.[' + @SAREXCLTABLENAME + '] ([SEGMENTATIONEXCLUSIONID]' + @INSERTCOLUMNS + ')' + char(13) +
                 '  select @SEGMENTATIONEXCLUSIONID' + @VALUESSQL + char(13) +
                 '  from dbo.[' + @SARTABLENAME + '] as [SAR]' + char(13) +
                 '  inner join dbo.[' + @MAILEXCLTABLENAME + '] as [MAILEXCL] on [MAILEXCL].[FINDERNUMBER] = [SAR].[FINDERNUMBER]' + char(13) +
                 '  where [MAILEXCL].[DONORQUERYVIEWCATALOGID] = @RECORDSOURCEID' + char(13) +
                 '  and [MAILEXCL].[SEGMENTATIONEXCLUSIONID] = @SEGMENTATIONEXCLUSIONID';
      exec sp_executesql @SQL, N'@SEGMENTATIONEXCLUSIONID uniqueidentifier, @SEGMENTATIONID uniqueidentifier, @RECORDSOURCEID uniqueidentifier',  @SEGMENTATIONEXCLUSIONID =  @SEGMENTATIONEXCLUSIONID, @SEGMENTATIONID = @SEGMENTATIONID, @RECORDSOURCEID = @RECORDSOURCEID;         
    end

  return 0;