sql >> Database >  >> RDS >> Sqlserver

Hoe een oneindige while-lus in SQL Server te organiseren?

Naast de WHILE 1 = 1 zoals de andere antwoorden suggereren, voeg ik vaak een "time-out" toe aan mijn SQL "infintie"-lussen, zoals in het volgende voorbeeld:

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

Ik vond de bovenstaande techniek nuttig binnen een opgeslagen procedure die wordt aangeroepen door een lange polling Ajax achterkant. Door de lus aan de databasezijde te hebben, hoeft de toepassing niet constant de database te raken om te controleren op nieuwe gegevens.



  1. ORA-24408:kan geen unieke servergroepsnaam genereren

  2. ontbrekende datum toevoegen in een tabel in PostgreSQL

  3. Generieke trigger om invoegingen te beperken op basis van aantal

  4. Heroku pg:back-ups herstellen mislukt blijkbaar vanwege de time-out van de Rails-toepassing