USP_DATAFORMTEMPLATE_EDITLOAD_MKTSEGMENTATIONFINDERNUMBER

The load procedure used by the edit dataform template "Marketing Effort Finder Number Edit Form"

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter used to load the fields defined on the form.
@MAXVALUE bigint INOUT Maximum value
@CHECKDIGIT bit INOUT Check digit
@MIN bigint INOUT Range
@MAX bigint INOUT Quantity
@VENDORID uniqueidentifier INOUT Reserved for
@DATALOADED bit INOUT Output parameter indicating whether or not data was actually loaded.
@SEGMENTATIONID uniqueidentifier INOUT Segmentation ID
@ASSIGNED bigint INOUT Assigned
@TSLONG bigint INOUT Output parameter indicating the TSLONG value of the record being edited. This is used to manage multi-user concurrency issues when multiple users access the same record.

Definition

Copy


CREATE procedure dbo.[USP_DATAFORMTEMPLATE_EDITLOAD_MKTSEGMENTATIONFINDERNUMBER]
(
  @ID uniqueidentifier,
  @MAXVALUE bigint = null output,
  @CHECKDIGIT bit = null output,  
  @MIN bigint = null output,
  @MAX bigint = null output,
  @VENDORID uniqueidentifier = null output,
  @DATALOADED bit = 0 output,
  @SEGMENTATIONID uniqueidentifier = null output,
  @ASSIGNED bigint = null output,
  @TSLONG bigint = 0 output
)
as
  set nocount on;

  declare @MAILINGTYPECODE tinyint;
  declare @DATATABLE nvarchar(128);
  declare @SQL nvarchar(max);
  declare @MINTEMP bigint;
  declare @MAXTEMP bigint;

  set @DATALOADED = 0;
  set @TSLONG = 0;

  select
    @MAXVALUE = convert(bigint, replicate('9', [FIXEDWIDTH])),
    @CHECKDIGIT = [CHECKDIGIT]
  from dbo.[MKTFINDERNUMBER];

  select
    @DATALOADED = 1,
    @MIN = [MIN],
    @MAX = [MAX],
    @VENDORID = isnull([VENDORID], '00000000-0000-0000-0000-000000000001'),
    @SEGMENTATIONID = [SEGMENTATIONID],
    @ASSIGNED = 0,
    @TSLONG = [TSLONG]
  from dbo.[MKTSEGMENTATIONFINDERNUMBER]
  where [ID] = @ID;

  if @DATALOADED = 1
    begin
      select @MAILINGTYPECODE = [MAILINGTYPECODE] from dbo.[MKTSEGMENTATION] where [ID] = @SEGMENTATIONID;
      set @DATATABLE = dbo.[UFN_MKTSEGMENTATIONACTIVATE_MAKETABLENAME](@SEGMENTATIONID);

      if exists(select top 1 1 from [INFORMATION_SCHEMA].[TABLES] where [TABLE_SCHEMA] = 'dbo' and [TABLE_NAME] = @DATATABLE)
        begin
          if @MAILINGTYPECODE = 2 -- memberships

            set @SQL = 'select @ASSIGNED = count(distinct [FINDERNUMBER]) from dbo.[' + @DATATABLE + '] where [FINDERNUMBER] > 0 and [FINDERNUMBER] between @MIN and @MAX';
          else
            set @SQL = 'select @ASSIGNED = count([FINDERNUMBER]) from dbo.[' + @DATATABLE + '] where [FINDERNUMBER] > 0 and [FINDERNUMBER] between @MIN and @MAX';

          set @MINTEMP = @MIN;
          set @MAXTEMP = @MAX;

          if @CHECKDIGIT = 1
            begin
              set @MINTEMP = @MINTEMP * 10;
              set @MAXTEMP = (@MAXTEMP * 10) + 9;
            end

          exec sp_executesql @SQL, N'@ASSIGNED bigint output, @MIN bigint, @MAX bigint', @ASSIGNED = @ASSIGNED output, @MIN = @MINTEMP, @MAX = @MAXTEMP;
        end
    end

  return 0;