Процесс, сохраненный в SQL Server - необходимо вернуть набор результатов до завершения выполнения - PullRequest
0 голосов
/ 27 октября 2011

У меня есть таблица соревнований с полем «WinningTime».Каждый день первый пользователь, сделавший запрос после этого времени, выигрывает соревнование, однако у него есть ограниченное время для ответа (скажем, 10 минут).Если они не отвечают в течение этого времени, соревнование помечается как не выигранное, поэтому выигрывает следующий пользователь.

Я пытаюсь создать процедуру, которая будет возвращать выигрышную строку изв таблице, отметьте его как выигранный, затем через 10 минут запустите другую процедуру, которая определит, ответил ли пользователь и решит, сбросить ли поле «Выиграно» или нет.

У меня все это работает сИсключение составляет то, что WAYITFOR DELAY, который я использую, также задерживает возвращаемый набор результатов.Есть ли способ заставить хранимый процесс возвращать результаты SELECT до завершения выполнения DELAY?

BEGIN
DECLARE @ID int


IF EXISTS(
    SELECT      ID
    FROM        Competitions
    WHERE       COALESCE(Won, 0) != 1
    AND         WinningTime < GetDate()
)
BEGIN
    --If we have a winner then select the row (whilst locking the table to prevent multiple winners), then update the row to mark the competition as being won
    BEGIN TRAN

        --Select row

        --Update row to mark it as 'Won'

    COMMIT TRAN

    --** We need to return the previous select before executing this **

    WAITFOR DELAY '000:10:00'
    EXECUTE ResetCompetition @CompID = @ID;

END
END

Я заменил некоторые из sql для краткости комментариями

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...