SQL Server数据库延时执行
沉沙 2018-05-09 来源 : 阅读 1933 评论 0

摘要:本文主要讲解了SQL Server数据库的延时执行,希望本文对大家学习SQL Server数据库有所帮助!

语法为:

WAITFOR 
{
    DELAY 'time_to_pass' 
  | TIME 'time_to_execute' 
  | [ ( receive_statement ) | ( get_conversation_group_statement ) ] 
    [ , TIMEOUT timeout ]
}

 

--示例1: 等待n秒后执行

Declare @t1 Varchar(8) 
Set @t1 = Convert(Varchar,DateAdd(ss, @Secnod, 0),108) 
WAITFOR DELAY @t1   --等待n秒 


--示例2:等待n秒后执行 
Declare @t1 DateTime, @n int 
Select @t1 = GetDate(), @n = 0 
While DateDiff(s,@t1,GetDate())<@Second  
Set @n = @n + 1 

--示例3:以下示例在晚上 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; 


--示例4:以下示例在两小时的延迟后执行存储过程。注意:Delay最多不超过24小时 
BEGIN 
WAITFOR DELAY '02:00'; 
EXECUTE sp_helpdb; 

END;

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

USE AdventureWorks2008R2;
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.

这是一种轻巧的解决方案。当你没有权限指定job时,可以考虑用WaitFor语句。


本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注SQL Server频道!


本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved