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

0 comentarios:

Publicar un comentario en la entrada