我想WHILE在SQL Server 2005中使用无限循环,并BREAK在某些情况下使用关键字退出它。
WHILE
BREAK
while true不起作用,所以我必须使用while 1=1。有没有更好的方法来组织无限循环?
while true
while 1=1
我知道我可以使用goto,但是while 1=1 begin ... end结构上看起来更好。
goto
while 1=1 begin ... end
除了WHILE 1 = 1其他答案所建议的以外,我还经常在SQL“ infintie”循环中添加“超时”,如以下示例所示:
WHILE 1 = 1
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
我发现上述技术在从长轮询AJAX后端调用的存储过程中很有用。在数据库端进行循环可以使应用程序不必经常访问数据库来检查新数据。