Zusätzlich zu WHILE 1 = 1
Wie die anderen Antworten andeuten, füge ich meinen SQL-Infintie-Schleifen häufig ein "Timeout" hinzu, wie im folgenden Beispiel:
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
Ich fand die obige Technik innerhalb einer gespeicherten Prozedur nützlich, die von einer langen Abfrage aufgerufen wird AJAX Backend. Da die Schleife auf der Datenbankseite liegt, muss die Anwendung nicht ständig auf die Datenbank zugreifen, um nach neuen Daten zu suchen.