SQL Server 2008中SQL增强之WaitFor命令详解

数据库 SQL Server
本文我们主要介绍了SQL Server 2008中SQL增强之WaitFor命令的使用,并给出了详细的代码示例加以说明,希望能够对您有所帮助。

上次我们介绍了:SQL Server 2008中SQL增强之Merge命令详解,本文我们主要介绍一下SQL Server 2008中SQL增强之WaitFor命令的使用,接下来我们就开始介绍。

在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 ]  

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

以下示例在晚上 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 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

以下示例在两小时的延迟后执行存储过程。注意:Delay最多不超过24小时

BEGIN  
WAITFOR DELAY '02:00';  
EXECUTE sp_helpdb;  
END;  
GO 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

以下示例显示如何对 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 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.

执行结果:

A total time of 00:00:10, in hh:mm:ss, has elapsed.Your time is up.

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

关于SQL Server 2008中SQL增强之WaitFor命令的相关知识就介绍到这里了,希望本次的介绍能够对您有所收获!

【编辑推荐】

  1. SQL Server多表查询优化方案总结
  2. SQL Server数据库ISNULL函数的应用实例
  3. SQL Server数据库DATEPART的语法及使用实例
  4. SQL Server根据子节点查询所有父节点的代码示例
  5. SQL Server脏读方式数据提取之NOLOCK和READPAST



 

 

责任编辑:赵鹏 来源: 博客园
相关推荐

2011-08-19 10:40:27

SQL Server Merge命令

2011-08-19 10:13:34

SQL Server Values新用途

2011-08-19 10:24:46

SQL Server Top新用途

2012-04-06 10:13:08

SQLSQL Server

2010-10-14 09:32:52

SQL Server

2009-03-17 13:25:13

查询迁移SQL Server

2010-10-11 09:05:40

SQL Server

2009-04-16 15:44:10

可管理性SQL Server

2011-08-19 11:26:41

SQL Server 主密钥

2009-04-16 18:15:19

动作审核审核活动SQL Server

2009-04-16 17:44:31

2010-05-13 10:00:10

SQL Server

2013-05-08 10:01:55

SQL Server 数据备份备份与还原

2011-03-15 10:22:42

SQL Server 联机事务处理

2010-08-05 09:07:24

2009-04-08 09:29:34

SQL Server新特性Resource Go

2013-03-13 09:53:50

SQL Server

2011-08-25 13:41:50

SQL Server 变更跟踪

2009-04-27 14:48:44

2011-09-01 15:24:22

SQL Server 存储过程调试
点赞
收藏

51CTO技术栈公众号