A. 使用 WAITFOR TIME
以下示例在晚上 10:20 (22:20) 執行存儲過程 sp_update_job。
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
B. 使用 WAITFOR DELAY
以下示例在兩小時的延遲后執行存儲過程。
BEGIN WAITFOR DELAY '02:00'; EXECUTE sp_helpdb; END; GOC. 對 WAITFOR DELAY 使用局部變量
以下示例顯示如何對 WAITFOR DELAY 選項使用局部變量。將創建一個存儲過程,該過程將等待可變的時間段,然后將經過的小時、分鐘和秒數信息返回給用戶。
USE AdventureWorks; GO IF OBJECT_ID('dbo.TimeDelay_hh_mm_ss','P') IS NOT NULL DROP PROCEDURE dbo.TimeDelay_hh_mm_ss; GO CREATE PROCEDURE dbo.TimeDelay_hh_mm_ss ( @DelayLength char(8)= '00:00:00' ) AS DECLARE @ReturnInfo varchar(255) IF ISDATE('2000-01-01 ' + @DelayLength + '.000') = 0 BEGIN SELECT @ReturnInfo = 'Invalid time ' + @DelayLength + ',hh:mm:ss, submitted.'; -- This PRINT statement is for testing, not use in production. PRINT @ReturnInfo RETURN(1) END BEGIN WAITFOR DELAY @DelayLength SELECT @ReturnInfo = 'A total time of ' + @DelayLength + ', hh:mm:ss, has elapsed! Your time is up.' -- This PRINT statement is for testing, not use in production. PRINT @ReturnInfo; END; GO /* This statement executes the dbo.TimeDelay_hh_mm_ss procedure. */ EXEC TimeDelay_hh_mm_ss '00:00:10'; GO下面是結果集:
A total time of 00:00:10, in hh:mm:ss, has elapsed. Your time is up.