SQL Server存储过程 - 需要在执行完成之前返回结果集

时间:2011-10-27 11:05:41

标签: sql sql-server tsql stored-procedures

我有一个带有'WinningTime'字段的比赛表。每天在此时间之后提出请求的第一个用户赢得竞争,但是他们的响应时间有限(例如10分钟)。如果他们在这段时间内没有回应,则比赛被评为未获胜,以便下一位用户获胜。

我要做的是创建一个程序,将从表中返回获胜行,将其标记为获胜,然后10分钟后运行另一个程序,该程序将检测用户是否已响应并决定是否重置“胜利”字段与否。

我所有这一切都工作,除了我正在使用的WAITFOR DELAY也延迟了返回的结果集。在DELAY执行完毕之前,有没有办法强制存储过程返回SELECT结果?

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

0 个答案:

没有答案