USP_MKTSEGMENTATIONSEGMENT_CACHERECORDCOUNT

Caches the record count for a marketing effort segment.

Parameters

Parameter Parameter Type Mode Description
@SEGMENTID uniqueidentifier IN
@RECORDCOUNT int IN

Definition

Copy


CREATE procedure dbo.[USP_MKTSEGMENTATIONSEGMENT_CACHERECORDCOUNT]
(
  @SEGMENTID uniqueidentifier,
  @RECORDCOUNT int
)
as
  set nocount on;

  declare @SEGMENTTYPECODE tinyint;
  declare @ISVENDORMANAGED bit;
  declare @SEGMENTATIONID uniqueidentifier;
  declare @SQL nvarchar(max);
  declare @OFFERCOUNT int;

  begin try
    select
      @SEGMENTTYPECODE = [MKTSEGMENT].[SEGMENTTYPECODE],
      @ISVENDORMANAGED = (case when [MKTSEGMENTLIST].[TYPECODE] = 1 then 1 else 0 end),
      @SEGMENTATIONID = [MKTSEGMENTATIONSEGMENT].[SEGMENTATIONID]
    from dbo.[MKTSEGMENTATIONSEGMENT]
    inner join dbo.[MKTSEGMENT] on [MKTSEGMENT].[ID] = [MKTSEGMENTATIONSEGMENT].[SEGMENTID]
    left join dbo.[MKTSEGMENTLIST] on [MKTSEGMENTLIST].[ID] = [MKTSEGMENT].[CURRENTSEGMENTLISTID]
    where [MKTSEGMENTATIONSEGMENT].[ID] = @SEGMENTID;


    if @SEGMENTTYPECODE = 3 or (@SEGMENTTYPECODE = 2 and @ISVENDORMANAGED = 1)
      --Revenue or vendor managed list segments - offer count will always be 100% of record count...

      set @OFFERCOUNT = @RECORDCOUNT;
    else
      begin
        set @SQL = 'select @OFFERCOUNT = count(*) from dbo.[' + dbo.[UFN_MKTSEGMENTATIONACTIVATE_MAKETABLENAME](@SEGMENTATIONID) + '] where [SEGMENTID] = @SEGMENTID';
        exec sp_executesql @SQL, N'@OFFERCOUNT int output, @SEGMENTID uniqueidentifier', @OFFERCOUNT = @OFFERCOUNT output, @SEGMENTID = @SEGMENTID;
      end


    if exists(select top 1 1 from dbo.[MKTSEGMENTATIONSEGMENTCACHEINFO] where [SEGMENTID] = @SEGMENTID)
      update dbo.[MKTSEGMENTATIONSEGMENTCACHEINFO] set
        [RECORDCOUNT] = @RECORDCOUNT,
        [OFFERCOUNT] = @OFFERCOUNT,
        [RECORDCOUNTDATECACHED] = getdate()
      where [SEGMENTID] = @SEGMENTID;
    else
      insert into dbo.[MKTSEGMENTATIONSEGMENTCACHEINFO] (
        [SEGMENTID],
        [RECORDCOUNT],
        [OFFERCOUNT],
        [RECORDCOUNTDATECACHED]
      ) values (
        @SEGMENTID,
        @RECORDCOUNT,
        @OFFERCOUNT,
        getdate()
      );
  end try

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

  return 0;