sql >> Database teknologi >  >> RDS >> Sqlserver

Hvordan organiserer man infinite while loop i SQL Server?

Ud over WHILE 1 = 1 som de andre svar antyder, tilføjer jeg ofte en "timeout" til mine SQL "infintie"-løkker, som i følgende eksempel:

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

Jeg fandt ovenstående teknik nyttig i en lagret procedure, der bliver kaldt fra en lang afstemning AJAX bagende. At have løkken på databasesiden frigør applikationen fra konstant at skulle ramme databasen for at søge efter nye data.



  1. oprette et tilfældigt tal ved hjælp af MYSQL

  2. Mysql lignende tekstsøgning

  3. PGError:FEJL:relation delayed_jobs eksisterer ikke (Postgresql, rails 3.04, delayed_job fejl)

  4. Oracle-databasen tillader ugyldig tidsdel af datetime-kolonneværdier under hvilke omstændigheder?