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


  1. CREATE PROCEDURE [dbo].[sp_ObtenerPrimerHueco]  
  2.     @table VARCHAR(100),  
  3.     @numericColumn VARCHAR(100),  
  4.     @minValue INT = NULL,  
  5.     --valor obtenido  
  6.     @value INT OUT  
  7. AS  
  8. BEGIN  
  9.     -- SET NOCOUNT ON added to prevent extra result sets from  
  10.     -- interfering with SELECT statements.  
  11.     SET NOCOUNT ON;  
  12.   
  13.     DECLARE @sql AS NVARCHAR(MAX)  
  14.     SET @sql =       N' SELECT TOP 1 @value = ' + @numericColumn  
  15.     SET @sql = @sql + ' FROM ' + @table + ' t1'  
  16.     SET @sql = @sql + ' WHERE NOT EXISTS('  
  17.     SET @sql = @sql + '    SELECT ' + @numericColumn  
  18.     SET @sql = @sql + '    FROM ' + @table + ' t2'  
  19.     SET @sql = @sql + '    WHERE t1.' + @numericColumn + ' + 1 = t2.' + @numericColumn  
  20.     SET @sql = @sql + ' )'  
  21.     SET @sql = @sql + ' AND ' + @numericColumn + ' >= ' + ISNULL(CAST(@minValue AS VARCHAR), '0')  
  22.     SET @sql = @sql + ' ORDER BY ' + @numericColumn       
  23.       
  24.     EXEC sp_executesql @statement = @sql,  
  25.          @params = N'@value INT OUTPUT',  
  26.          @value = @value OUTPUT   
  27. END  

No hay comentarios:

Publicar un comentario