SQL Server INSERT in Loop

时间:2014-09-17 08:40:00

标签: sql sql-server-2008

我有这个SQL脚本:

DECLARE @Loop INT
SET @Loop = 1
DECLARE @Result table([1] int, [2] int,[3] int,[4] int,[5]);

WHILE (@Loop <=5)
BEGIN

INSERT INTO @Result(@Loop)
 SELECT Id FROM Students WHERE Id=@Loop

SET @Loop= @Loop+ 1
END

我在这行中遇到错误:

INSERT INTO @Result(@Loop)

是否可以使用这种方式使用循环将数据插入列名?我的意思是动态

由于

1 个答案:

答案 0 :(得分:1)

这就像我能得到的一样接近。

我使用动态sql构建插入sql。

我使用临时表#Result而不是变量@Result,因为@Result变量的范围意味着此技术不起作用。

DECLARE @Loop INT;
SET @Loop = 1;

CREATE TABLE #Result([1] int, [2] int, [3] int, [4] int, [5] int);

DECLARE @Sql AS NVARCHAR(MAX);
DECLARE @LoopNVARCHAR AS NVARCHAR(10);

WHILE (@Loop <= 5)
BEGIN
    SET @LoopNVARCHAR = CAST(@Loop AS NVARCHAR(10));
    SET @Sql = N'INSERT INTO #Result([' + @LoopNVARCHAR + ']) SELECT Id FROM Students WHERE Id = ' + @LoopNVARCHAR;
    exec (@Sql)
    SET @Loop = @Loop + 1
END

SELECT * FROM #Result
DROP TABLE #Result