Creo que necesitas entender que para MOVER AL MUNDO, requieres de una BASE, por tanto, analiza este ejemplo e implementalo en tu objetivo.
Código SQL:
Ver originalSET nocount ON;
-- asumimos que es una tabla de sistema base.
CREATE TABLE #_series(
id INT PRIMARY KEY,
txt nvarchar(24)
);
-- dejamos intencionadamente de insertar el id #4 y #8 para realizar su busqueda.
INSERT INTO #_series VALUES(1, 'Notepad');
INSERT INTO #_series VALUES(2, 'Office 2010');
INSERT INTO #_series VALUES(3, 'Visual Studio 2010');
INSERT INTO #_series VALUES(5, 'Windows 7');
INSERT INTO #_series VALUES(6, 'Jaguar SFAX-25');
INSERT INTO #_series VALUES(7, 'Hyper-V');
INSERT INTO #_series VALUES(9, 'Windows Server 2008 R2');
print 'inicio '+CONVERT(nvarchar(50), getdate(), 121);
-- un vistazo.
SELECT * FROM #_series;
-- de hecho, no usaremos cursores.
DECLARE @n1 INT;
DECLARE @nn INT;
-- conseguir el primer y el ultimo numero de la secuencia
SET @n1 = (SELECT top 1 id FROM #_series ORDER BY id ASC);
SET @nn = (SELECT top 1 id FROM #_series ORDER BY id DESC);
-- crear una tabla temporal para la lista de identificadores generados interpolando el n1 y nn.
CREATE TABLE #_se(
id INT
);
print 'iniciar tabla id '+CONVERT(nvarchar(50), getdate(), 121);
DECLARE @i INT;
SET @i = @n1;
while @i <= @nn
BEGIN
INSERT INTO #_se VALUES (@i);
SET @i = @i + 1;
END
print 'fin tabla id '+CONVERT(nvarchar(50), getdate(), 121);
-- conseguir los ids huecos
SELECT id FROM #_se
WHERE NOT EXISTS(SELECT id FROM #_series WHERE #_series.id = #_se.id) ---- not in (select id from #_series);
-- limpieza
DROP TABLE #_se;
DROP TABLE #_series;