create procedure sys.sp_MSuniquetempname @name_in sysname,
@name_out sysname output
AS
declare @subschars nvarchar(26)
declare @curchar nchar(1)
declare @substidx int
declare @pos int
declare @saverr int
select @subschars = 'abcdefghijklmnopqrstuvwxyz'
select @saverr = @@error
if (@saverr <> 0)
goto EXIT_LABEL
select @name_out = @name_in
select @saverr = @@error
if (@saverr <> 0)
goto EXIT_LABEL
select @saverr = @@error
if (@saverr <> 0)
goto EXIT_LABEL
select @substidx = 0
select @pos = 3
while exists (select * from tempdb.sys.objects where name = @name_out)
begin
if @substidx > 25
begin
select @pos = @pos + 1
select @substidx = 1
end
else
select @substidx = @substidx + 1
select @curchar = substring(@subschars, @substidx, 1)
select @saverr = @@error
if (@saverr <> 0)
goto EXIT_LABEL
select @name_out = stuff(@name_out, @pos, 1, @curchar)
select @saverr = @@error
if (@saverr <> 0)
goto EXIT_LABEL
end
return (0)
EXIT_LABEL:
if (@saverr <> 0)
begin
RAISERROR(15001, 16, -1, 'sp_MSuniquetempname')
return (1)
end