Citas Citables


viernes, 23 de julio de 2010

Siguiente indice SQL

En algun momento me enfrente a una tabla en la cual se podian eliminar sus entradas, nada muy raro, solo que la forma de sacar el siguiente codigo a utilizar era la muy conocida forma del maximo mas uno.

set @last =  select isnull( max([codigoBuscado]),0) + 1

Y esta , no me era muy util

declare @minimo int, @maximo int, @total int
select      @minimo = isnull(min( [codigoBuscado] ),0),
            @maximo = isnull(max( [codigoBuscado] ),0),
            @total      = isnull(count( [codigoBuscado] ),0)
from       [Base_de_Datos].[propietario].[Tabla _a_buscar]

if( @total != @maximo ) begin 
siguiente:
      select @minimo = @minimo + 1
      if exists(select * from [Tabla _a_buscar] 
                        where [codigoBuscado] = @minimo )
            goto siguiente
      else 
            set @last = @minimo
            
end 
else
set @last = @maximo + 1

/* es el siguiente indice vacio */
select @last 

En algun momento me enfrente a una tabla en la cual se podian eliminar sus entradas, nada muy raro, solo que la forma de sacar el siguiente codigo a utilizar era la muy conocida forma del maximo mas uno.

set @last =  select isnull( max([codigoBuscado]),0) + 1

Y esta , no me era muy util

declare @minimo int, @maximo int, @total int
select      @minimo = isnull(min( [codigoBuscado] ),0),
            @maximo = isnull(max( [codigoBuscado] ),0),
            @total      = isnull(count( [codigoBuscado] ),0)
from       [Base_de_Datos].[propietario].[Tabla _a_buscar]

if( @total != @maximo ) begin 
siguiente:
      select @minimo = @minimo + 1
      if exists(select * from [Tabla _a_buscar] 
                        where [codigoBuscado] = @minimo )
            goto siguiente
      else 
            set @last = @minimo
            
end 
else
set @last = @maximo + 1

/* es el siguiente indice vacio */
select @last 

0 comentarios: