I want to use infinite
while 1=1 begin ... end
In addition to the
WHILE 1 = 1 as the other answers suggest, I often add a "timeout" to my SQL "infintie" loops, as in the following example:
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
I found the above technique useful within a stored procedure that gets called from a long polling AJAX backend. Having the loop on the database-side frees the application from having to constantly hit the database to check for fresh data.