首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在SQL Server中组织无限的while循环?

如何在SQL Server中组织无限的while循环?
EN

Stack Overflow用户
提问于 2010-03-17 00:48:32
回答 4查看 32.7K关注 0票数 19

我想在SQL Server2005中使用无限WHILE循环,并在一定条件下使用BREAK关键字退出。

while true不工作,所以我必须使用while 1=1。有没有更好的方法来组织无限循环?

我知道我可以使用goto,但是while 1=1 begin ... end在结构上看起来更好。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-03-17 00:56:54

除了其他答案建议的超时之外,我还经常在我的SQL "infintie“循环中添加一个”WHILE 1 = 1“,如下面的示例所示:

代码语言:javascript
复制
DECLARE @startTime datetime2(0) = GETDATE();

-- This will loop until BREAK is called, or until a timeout of 45 seconds.
WHILE (GETDATE() < DATEADD(SECOND, 45, @startTime))
BEGIN
    -- Logic goes here: The loop can be broken with the BREAK command.

    -- Throttle the loop for 2 seconds.    
    WAITFOR DELAY '00:00:02';
END

我发现上面的技术在从long polling AJAX后端调用的存储过程中很有用。将循环放在数据库端可以使应用程序不必不断地访问数据库来检查新数据。

票数 29
EN

Stack Overflow用户

发布于 2010-03-17 00:51:05

使用带有Break语句的While 1 = 1就是这样做的。T-SQL中没有TRUE或FALSE的常量。

票数 16
EN

Stack Overflow用户

发布于 2010-03-17 00:51:34

如果你真的必须使用无限循环,那么使用while 1=1就是我的方式。

这里的问题是,没有其他方法来避免无限循环吗?这些事情往往会出错;)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2456330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档