UFN_APPEALMAILING_GETUNIQUEOUTPUTIDSETNAME

Returns a unique name for an appeal mailing output ID set by appending a counter if necessary.

Return

Return Type
nvarchar(100)

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@NAME nvarchar(100) IN
@PREFIX nvarchar(10) IN

Definition

Copy


create function dbo.[UFN_APPEALMAILING_GETUNIQUEOUTPUTIDSETNAME]
(
  @ID uniqueidentifier,
  @NAME nvarchar(100),
  @PREFIX nvarchar(10)=null
)
/*
returns a unique name for an output ID set by adding a counter. 
*/
returns nvarchar(100)
as
begin
  declare @NEWNAME nvarchar(255);
  declare @TRIMNAME nvarchar(100);
  declare @COPYCOUNT int;
  declare @INSTANCECOUNT int;

  if @PREFIX is null 
    set @PREFIX = 'Copy';

  set @COPYCOUNT = 0;
  set @NEWNAME = @NAME;
  set @TRIMNAME = @NAME;

  set @INSTANCECOUNT = (select count(1) from [dbo].[MKTSEGMENTATION] L where L.[OUTPUTIDSETNAME]=@NEWNAME);
  while @INSTANCECOUNT > 0
  begin
    set @COPYCOUNT=@COPYCOUNT+1;
    if @COPYCOUNT>1
      set @NEWNAME = @PREFIX + ' (' + cast(@COPYCOUNT as nvarchar(20)) + ') of ' + @TRIMNAME
    else
      set @NEWNAME = @PREFIX + ' of ' + @TRIMNAME;

    while len(@NEWNAME)>100 and len(@TRIMNAME)>1
    begin
      set @TRIMNAME = substring(@TRIMNAME,1,LEN(@TRIMNAME)-1);
      if @COPYCOUNT>1
        set @NEWNAME = @PREFIX + ' (' + cast(@COPYCOUNT as nvarchar(20)) + ') of ' + @TRIMNAME
      else
        set @NEWNAME = @PREFIX + ' of ' + @TRIMNAME;
    end;

    set @instancecount = (select count(1) from [dbo].[MKTSEGMENTATION] L where L.[OUTPUTIDSETNAME]=@NEWNAME and L.[ID]<>@ID);
  end;
  return @NEWNAME;
end;