當前位置:
首頁 >
SQL:waitfor的使用
發布時間:2024/9/5
57
豆豆
生活随笔
收集整理的這篇文章主要介紹了
SQL:waitfor的使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
摘自:http://www.cnblogs.com/downmoon/archive/2010/12/07/1899233.html
在SQL Server 2005以上版本中,在一個增強的WaitFor命令,其作用可以和一個job相當。但使用更加簡捷。
看MSDN:
http://msdn.microsoft.com/zh-cn/library/ms187331.aspx
語法為:
WAITFOR{
DELAY 'time_to_pass'
| TIME 'time_to_execute'
| [ ( receive_statement ) | ( get_conversation_group_statement ) ]
[ , TIMEOUT timeout ]
}
以下示例在晚上 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
以下示例在兩小時的延遲后執行存儲過程。注意:Delay最多不超過24小時
BEGIN
WAITFOR DELAY '02:00';
EXECUTE sp_helpdb;
END;
GO
以下示例顯示如何對 WAITFOR DELAY 選項使用局部變量。將創建一個存儲過程,該過程將等待可變的時間段,然后將經過的小時、分鐘和秒數信息返回給用戶。
USE AdventureWorks2008R2;
GO
IFOBJECT_ID('dbo.TimeDelay_hh_mm_ss','P') ISNOTNULL
DROPPROCEDURE dbo.TimeDelay_hh_mm_ss;
GO
CREATEPROCEDURE dbo.TimeDelay_hh_mm_ss
(
@DelayLengthchar(8)='00:00:00'
)
AS
DECLARE@ReturnInfovarchar(255)
IFISDATE('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.
小結:這是一種輕巧的解決方案。當你沒有權限指定job時,可以考慮用WaitFor語句。
另加例子:
用途有兩個:?
1、延遲一段時間后執行?
比如:?
waitfor delay '00:00:05'?
print '延遲5秒執行!'?
--5秒后執行print?
2、指定從何時起執行?
比如:?
waitfor time '21:17'?
print '21:17執行'?
--到21:17的時候才會執行print
?
?
轉載于:https://www.cnblogs.com/KeenLeung/archive/2013/03/25/2980541.html
總結
以上是生活随笔為你收集整理的SQL:waitfor的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaScript深入【表达式和运算符
- 下一篇: 数据库 -- 由数据库连接池引出的三