sql - 如何在 SQL Server 中组织无限 while 循环?

标签 sql sql-server sql-server-2005 loops boolean

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

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

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

最佳答案

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

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 调用的存储过程中很有用。后端。在数据库端使用循环可以使应用程序不必不断访问数据库来检查新数据。

关于sql - 如何在 SQL Server 中组织无限 while 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2456330/

相关文章:

sql-server - 识别 SQL Server 中的连接和 Activity SQL

连接一列的 SQL 查询

sql - 唯一索引变慢?

sql - 更新或删除违反外键约束

SQL Server错误处理,判断记录是否存在,然后执行过程

sql-server - Angular 按字母顺序排列 GET 响应

SQL:为什么在此 where 子句中过滤掉 NULL 值?

SQL 按年龄范围分组

php - php 代码中的正确信息未插入到 Sql db 中

sql - 快速计算不同列值的方法(使用索引?)