Förutom WHILE 1 = 1
som de andra svaren antyder lägger jag ofta till en "timeout" till mina SQL "infintie" loopar, som i följande exempel:
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
Jag tyckte att ovanstående teknik var användbar inom en lagrad procedur som anropas från en lång omröstning AJAX backend. Att ha slingan på databassidan befriar programmet från att ständigt behöva träffa databasen för att leta efter färska data.