USP_MKTSEGMENTATIONEXCLUSION_UPDATEQUANTITY

Updates the quantities for a post activation exclusion

Parameters

Parameter Parameter Type Mode Description
@SEGMENTATIONEXCLUSIONID uniqueidentifier IN
@EXCEPTIONTABLE nvarchar(128) IN
@DELETEDQUANTITY int INOUT
@EXCEPTIONQUANTITY int INOUT
@CHANGEAGENTID uniqueidentifier IN

Definition

Copy


CREATE procedure dbo.USP_MKTSEGMENTATIONEXCLUSION_UPDATEQUANTITY
(
  @SEGMENTATIONEXCLUSIONID uniqueidentifier,
  @EXCEPTIONTABLE nvarchar(128),
  @DELETEDQUANTITY int output,
  @EXCEPTIONQUANTITY int output,
  @CHANGEAGENTID uniqueidentifier = null
)
with execute as owner
as
  set nocount on;

  declare @ORIGINALQUANTITY int;
  declare @CURRENTDATE datetime = getdate();
  declare @DATATABLE nvarchar(128);
  declare @EXCLUSIONTABLE nvarchar(128);
  declare @SQL nvarchar(max);

  if @CHANGEAGENTID is null
    exec dbo.[USP_CHANGEAGENT_GETORCREATECHANGEAGENT] @CHANGEAGENTID output;

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

  set @SQL = 'select @ORIGINALQUANTITY = count(*) from dbo.[' + @DATATABLE + ']';
  exec sp_executesql @SQL, N'@ORIGINALQUANTITY int output', @ORIGINALQUANTITY = @ORIGINALQUANTITY output;

  set @SQL = 'select @DELETEDQUANTITY = count(*) from dbo.[' + @EXCLUSIONTABLE + '] where [SEGMENTATIONEXCLUSIONID] = @SEGMENTATIONEXCLUSIONID';
  exec sp_executesql @SQL, N'@DELETEDQUANTITY int output, @SEGMENTATIONEXCLUSIONID uniqueidentifier', @DELETEDQUANTITY = @DELETEDQUANTITY output, @SEGMENTATIONEXCLUSIONID = @SEGMENTATIONEXCLUSIONID;

  if isnull(@EXCEPTIONTABLE, '') <> '' and exists(select * from INFORMATION_SCHEMA.TABLES where [TABLE_SCHEMA] = 'dbo' and [TABLE_NAME] = @EXCEPTIONTABLE)
    begin
      set @SQL = 'select @EXCEPTIONQUANTITY = count(*) from dbo.[' + @EXCEPTIONTABLE + ']';
      exec sp_executesql @SQL, N'@EXCEPTIONQUANTITY int output', @EXCEPTIONQUANTITY = @EXCEPTIONQUANTITY output;
    end
  else
    set @EXCEPTIONQUANTITY = 0;

  update dbo.[MKTSEGMENTATIONEXCLUSION] set
    [ORIGINALQUANTITY] = @ORIGINALQUANTITY,
    [DELETEDQUANTITY] = @DELETEDQUANTITY
    [EXCEPTIONQUANTITY] = @EXCEPTIONQUANTITY,
    [CHANGEDBYID] = @CHANGEAGENTID,
    [DATECHANGED] = @CURRENTDATE
  where [ID] = @SEGMENTATIONEXCLUSIONID;

  return 0;