如何在SQL中实际使用WAITFOR语句?

时间:2014-01-16 23:23:52

标签: sql-server sql-server-2008 sql-server-2008-r2 sql-server-2012

也许有人已经问过这个,但我找不到这个问题的恰当答案。

如果我有,请按照以下查询:

SELECT 
    column1,
    column2,
    column3
FROM Table1 AS t1
WAITFOR DELAY '10:00:00'

此查询返回大约100000行。

WAITFOR语句是否等待10个小时才告诉SQL Server执行查询并立即生成结果或SQL Server执行查询并将结果保存在RAM中10个小时然后通过网络发送或只显示?

我在这里错过了什么吗?

如果有人给我一些证明第一或第二种解决方案的真实例子,我将不胜感激。

我执行了下一个查询:

SELECT GETDATE()
SELECT GETDATE()
WAITFOR DELAY '00:00:05'

结果是两个相同的日期。在此基础上,我将得出结论,SQL Server会立即执行查询并将结果保留一段时间以显示,但这对我来说毫无意义。

1 个答案:

答案 0 :(得分:0)

根据docsWAITFOR命令用于在指定的时间内阻止语句或事务。在这种情况下,您将使用它来延迟后续语句。换句话说,您希望在 WAITFOR命令之后执行某些,而不是之前。以下是一些例子:

以下示例在延迟两小时后执行存储过程。

BEGIN
    WAITFOR DELAY '02:00';
    EXECUTE sp_helpdb;
END;
GO

以下示例在下午10:20执行存储过程sp_update_job。 (22:20)。

USE msdb;
EXECUTE sp_add_job @job_name = 'TestJob';
BEGIN
    WAITFOR TIME '22:20';
    EXECUTE sp_update_job @job_name = 'TestJob',
        @new_name = 'UpdatedJob';
END;
GO