CREATE PROCEDURE GET_ID (@fname nvarchar(20),@id int output)
AS
begin
   declare @i int
   declare @idesc int
   declare @u nvarchar(20)
   declare @s nvarchar(4000)
   
   set @idesc=1
   set @u=N''
   set @s=N'select @i=count(bh) from '+@fname
   exec sp_executesql @s,N'@i int out',@i out
   
   IF EXISTS(SELECT name FROM sysindexes WHERE name = 'bh_index')
       exec('DROP INDEX '+@fname+'.bh_index')
   
   exec('CREATE INDEX bh_index ON '+@fname+' (bh)')
   while @i<>0
   begin
       set @s='select DISTINCT top 1 @u=bh from @fname where bh=@idesc'
       exec sp_executesql @s,N'@u int out,@idesc int',@u out,@idesc
       if @@rowcount=0
       begin
           set @id=@idesc
           return
       end
       set @i=@i-1
       set @idesc=@idesc+1
   end
   set @id=@idesc
end
GO