UFN_MKTSOURCECODE_GETUNIQUENAME

Returns a unique name for a source code by appending a counter is 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_MKTSOURCECODE_GETUNIQUENAME]
(
  @ID uniqueidentifier,
  @NAME nvarchar(100),
  @PREFIX nvarchar(10)=null
)
/*
returns a unique name for a source code 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(*) from [dbo].[MKTSOURCECODE] L where L.[NAME]=@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(*) from [dbo].[MKTSOURCECODE] L where L.[NAME]=@NEWNAME and L.[ID]<>@ID);
  end;
  return @NEWNAME;
end;