首页 > 解决方案 > 如何运行 while 循环以在 SQL 中运行动态查询?

问题描述

如何运行 while 循环以在 SQL 中运行动态查询?

Declare @var1 nvarchar(max)
Declare @var2 nvarchar(max)
Declare @var3 nvarchar(max)

While loop ( @var1, @var2, @var3 .... )
 Begin  
     insert into TableA
     exec (@var1) .. - in the loop logic
 End

标签: sqlsql-server

解决方案


如果我理解得很好,您想使用循环来执行一组动态 SQL 查询。然后你需要使用一个表在它们之间进行迭代,我使用一个变量表,但是如果你愿意,你可以使用一个临时表

DECLARE @Vars TABLE([ID] NOT NULL IDENTITY, [Var] NVARCHAR(MAX))
/*
INSERT Values to @Vars
*/
DECLARE @ID INT, @Var NVARCHAR(MAX)
WHILE EXISTS (SELECT 1 FROM @Vars)
BEGIN
    SELECT TOP 1 @ID = [ID], @Var = [Var] FROM @Vars ORDER BY [ID]

    INSERT TableA
    EXEC(@Var)

    DELETE @Vars WHERE [ID] = @ID
END

推荐阅读