sql >> Databasteknik >  >> RDS >> Sqlserver

Hur organiserar man infinite while loop i SQL Server?

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.



  1. Hur man formaterar en numerisk kolumn som telefonnummer i SQL

  2. Hur sammanfogar jag hela resultatuppsättningar i MySQL?

  3. Finns det ett alternativ till TOP i MySQL?

  4. mysql_connect():Ingen anslutning kunde göras eftersom målmaskinen aktivt vägrade det