UFN_MKTASKLADDER_GETUNIQUENAME

Returns a unique name for an ask ladder by appending a counter as 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_MKTASKLADDER_GETUNIQUENAME]
(
  @ID uniqueidentifier,
  @NAME nvarchar(100),
  @PREFIX nvarchar(10) = null
)
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].[MKTASKLADDER] where [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].[MKTASKLADDER] where [NAME] = @NEWNAME and [ID] <> @ID)
      end

    return @NEWNAME
  end