WHILE 1 = 1
に加えて 他の回答が示唆するように、次の例のように、SQL の「無限」ループに「タイムアウト」を追加することがよくあります。
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
長いポーリングから呼び出されるストアド プロシージャ内で上記の手法が役立つことがわかりました。 AJAX バックエンド。データベース側にループを配置することで、アプリケーションは常にデータベースにアクセスして新しいデータをチェックする必要がなくなります。