小编Con*_*ete的帖子

当需要计数器时,在SQL中避免while循环

我觉得这是一个常见问题,但似乎我在SO或其他网站上找到的答案似乎都没有解决带有计数器的while循环问题.

假设我正在尝试在SQL中编写一个存储过程,该存储过程将填充用户的时间表,方法是在该月的剩余时间内为每一天插入一行.如果@endMonth变量保存了该月的最后一天,那么我知道我可以轻松地编写一个while循环并按照这些行执行某些操作:

WHILE @date <= @endMonth
BEGIN
    //Do some action with the date, like an insert
    SET @date = DATEADD(d, 1, @date) //increment the date by one day
END
Run Code Online (Sandbox Code Playgroud)

但是,在这里和其他网站上查看答案会让我相信,如果可能的话,最好避免使用while循环.

所以我的问题是:有没有办法在不使用WHILE结构的情况下在SQL中实现带计数器的循环?我将使用什么技术来转换类似于我发布的循环?或者像这样的东西,我是否必须咬紧牙关并使用while循环?

顺便说一下,下面的一些问题很接近,但它们似乎都没有解决需要将计数器作为循环条件的问题.大多数答案似乎都谴责使用WHILE循环,但我似乎无法找到一个替代方案的通用解决方案.
带有日期计数器的sql while循环
SQL Server 2008使用WHILE LOOP插入(这一个很接近,但不幸的是,它只适用于自动增量列)

sql sql-server loops while-loop

5
推荐指数
1
解决办法
2210
查看次数

标签 统计

loops ×1

sql ×1

sql-server ×1

while-loop ×1