• 相关软件
    >Transact-SQL 参考 (WAITFOR) 创建者:webmaster 更新时间:2006-01-14 00:00

    指定触发语句块、存储过程或事务执行的时间、时间间隔或事件。


    语法

    WAITFOR { DELAY 'time' | TIME 'time' }


    参数

    DELAY


    指示 Microsoft? SQL Server? 一直等到指定的时间过去,最长可达 24 小时。


    'time'


    要等待的时间。可以按 datetime 数据可接受的格式指定 time,也可以用局部变量指定此参数。不能指定日期。因此,在 datetime 值中不允许有日期部分。


    TIME


    指示 SQL Server 等待到指定时间。


    注释

    执行 WAITFOR 语句后,在到达指定的时间之前或指定的事件出现之前,将无法使用与 SQL Server 的连接。


    若要查看活动的进程和正在等待的进程,请使用 sp_who


    示例

    A. 使用 WAITFOR TIME

    下例在晚上 10:20 执行存储过程 update_all_stats

    BEGIN
      WAITFOR TIME '22:20'
      EXECUTE update_all_stats
    END

    有关使用此过程更新数据库中所有统计的更多信息,请参见 UPDATE STATISTICS 中的示例。


    B. 使用 WAITFOR DELAY

    下例说明如何对 WAITFOR DELAY 选项使用局部变量。将创建一个存储过程,该过程将等待可变的时间量,然后将所经过的小时、分钟和秒数信息返回给用户。

    CREATE PROCEDURE time_delay @@DELAYLENGTH char(9)
    AS
    DECLARE @@RETURNINFO varchar(255)
    BEGIN
      WAITFOR DELAY @@DELAYLENGTH
      SELECT @@RETURNINFO = 'A total time of ' +
                SUBSTRING(@@DELAYLENGTH, 1, 3) +
                ' hours, ' +
                SUBSTRING(@@DELAYLENGTH, 5, 2) +
                ' minutes, and ' +
                SUBSTRING(@@DELAYLENGTH, 8, 2) +
                ' seconds, ' +
                'has elapsed! Your time is up.'
      PRINT @@RETURNINFO
    END
    GO
    -- This next statement executes the time_delay procedure.
    EXEC time_delay '000:00:10'
    GO

    下面是结果集:

    A total time of 000 hours, 00 minutes, and 10 seconds, has elapsed! Your time is up.
    相关文章
    本页查看次数: