sql >> Base de Datos >  >> RDS >> Sqlserver

¿Cómo organizar un ciclo while infinito en SQL Server?

Además del WHILE 1 = 1 como sugieren las otras respuestas, a menudo agrego un "tiempo de espera" a mis bucles SQL "infintie", como en el siguiente ejemplo:

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

Encontré la técnica anterior útil dentro de un procedimiento almacenado que se llama desde un sondeo largo AJAX back-end Tener el bucle en el lado de la base de datos libera a la aplicación de tener que acceder constantemente a la base de datos para buscar datos nuevos.