miércoles, 14 de diciembre de 2011

Procedimiento almacenado para encontrar el primer hueco en una tabla

Con este procedimiento almacenado podemos obtener el primer hueco existente en cualquier tabla


CREATE PROCEDURE [dbo].[sp_ObtenerPrimerHueco]
    @table VARCHAR(100),
    @numericColumn VARCHAR(100),
    @minValue INT = NULL,
    --valor obtenido
    @value INT OUT
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    DECLARE @sql AS NVARCHAR(MAX)
    SET @sql =       N' SELECT TOP 1 @value = ' + @numericColumn
    SET @sql = @sql + ' FROM ' + @table + ' t1'
    SET @sql = @sql + ' WHERE NOT EXISTS('
    SET @sql = @sql + '    SELECT ' + @numericColumn
    SET @sql = @sql + '    FROM ' + @table + ' t2'
    SET @sql = @sql + '    WHERE t1.' + @numericColumn + ' + 1 = t2.' + @numericColumn
    SET @sql = @sql + ' )'
    SET @sql = @sql + ' AND ' + @numericColumn + ' >= ' + ISNULL(CAST(@minValue AS VARCHAR), '0')
    SET @sql = @sql + ' ORDER BY ' + @numericColumn     
    
    EXEC sp_executesql @statement = @sql,
         @params = N'@value INT OUTPUT',
         @value = @value OUTPUT 
END

No hay comentarios:

Publicar un comentario