USP_MKTSEGMENTATIONEXCLUSION_DELETEFROMCONSTITUENTSEGMENT

Remove constituents from the constituent segment table.

Parameters

Parameter Parameter Type Mode Description
@SEGMENTATIONEXCLUSIONID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN

Definition

Copy


CREATE procedure dbo.USP_MKTSEGMENTATIONEXCLUSION_DELETEFROMCONSTITUENTSEGMENT
(
  @SEGMENTATIONEXCLUSIONID uniqueidentifier,
  @CHANGEAGENTID uniqueidentifier = null
)
as
  set nocount on;

  declare @SEGMENTATIONID uniqueidentifier;
  declare @EXCLUSIONTABLE nvarchar(128);
  declare @CONSTITSEGMENTTABLE nvarchar(128);
  declare @SQL nvarchar(max);

  select
    @SEGMENTATIONID = [SEGMENTATIONID],
    @EXCLUSIONTABLE = dbo.[UFN_MKTSEGMENTATIONACTIVATEEXCLUSION_MAKETABLENAME]([SEGMENTATIONID])
  from dbo.[MKTSEGMENTATIONEXCLUSION]
  where [ID] = @SEGMENTATIONEXCLUSIONID;

  declare RECORDSOURCECURSOR cursor local fast_forward for
    select
      dbo.[UFN_CONSTITUENTSEGMENT_MAKETABLENAME]([QUERYVIEWCATALOGID])
    from dbo.[UFN_MKTSEGMENTATION_GETDISTINCTRECORDSOURCES](@SEGMENTATIONID);

  open RECORDSOURCECURSOR;
  fetch next from RECORDSOURCECURSOR into @CONSTITSEGMENTTABLE;

  while (@@FETCH_STATUS = 0)
  begin
    set @SQL = 'delete from dbo.[' + @CONSTITSEGMENTTABLE + ']' + char(13) +
               'from dbo.[' + @CONSTITSEGMENTTABLE + '] as [CS]' + char(13) +
               'inner join dbo.[' + @EXCLUSIONTABLE + '] as [EXCL] on [EXCL].[FINDERNUMBER] = [CS].[FINDERNUMBER]' + char(13) +  
               'where [EXCL].[SEGMENTATIONEXCLUSIONID] = @SEGMENTATIONEXCLUSIONID';
    exec sp_executesql @SQL, N'@SEGMENTATIONEXCLUSIONID uniqueidentifier', @SEGMENTATIONEXCLUSIONID = @SEGMENTATIONEXCLUSIONID;

    fetch next from RECORDSOURCECURSOR into @CONSTITSEGMENTTABLE;
  end

  close RECORDSOURCECURSOR;
  deallocate RECORDSOURCECURSOR;

  return 0;