为一个或多个条件循环SQL Server

时间:2015-07-27 16:51:01

标签: sql sql-server for-loop foreach sql-server-2008-r2

我有SQL Server 2008 R2,我正在尝试使用客户端应用程序中将返回动态值的参数运行查询。然后应该为每个参数独立运行...

PARAM VALUE contains 1,2,3,4,5

Loop for each <PARAM VALUE>
   Select * from Table where ID = <PARAM VALUE>
Next

我如何循环每个逗号分隔值并独立运行查询?

结束所有目标是我将每个传递插入一个新的临时表作为结果。

1 个答案:

答案 0 :(得分:0)

您可以使用表变量来遍历值:

DECLARE @Values TABLE (Index INT)
INSERT @Values VALUES (1, 2, 3, 4, 5)
DECLARE @Index INT
WHILE EXISTS (SELECT * FROM @Values) BEGIN
    SET @Index = (SELECT TOP 1 Index FROM @Values)
    SELECT * FROM Table WHERE ID = @Index
    DELETE @Values WHERE Index = @Index
END

如果值列表是序列,则可以使用更典型的循环:

DECLARE @Index INT = 1
WHILE @Index <= 5 BEGIN
    SELECT * FROM Table WHERE ID = @Index
    SET @Index = @Index + 1
END