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

语法为:

  1. WAITFOR   
  2. {  
  3. DELAY 'time_to_pass'   
  4. | TIME 'time_to_execute'   
  5. | [ ( receive_statement ) | ( get_conversation_group_statement ) ]   
  6. [ , TIMEOUT timeout ]  

以下示例在晚上 10:20 (22:20) 执行存储过程sp_update_job。

  1. USE msdb;  
  2. EXECUTE sp_add_job @job_name = 'TestJob';  
  3. BEGIN  
  4. WAITFOR TIME '22:20';  
  5. EXECUTE sp_update_job @job_name = 'TestJob',  
  6. @new_name = 'UpdatedJob';  
  7. END;  
  8. GO 

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

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

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

  1. USE AdventureWorks2008R2;  
  2. GO  
  3. IF OBJECT_ID('dbo.TimeDelay_hh_mm_ss','P') IS NOT NULL  
  4. DROP PROCEDURE dbo.TimeDelay_hh_mm_ss;  
  5. GO  
  6. CREATE PROCEDURE dbo.TimeDelay_hh_mm_ss   
  7. (  
  8. @DelayLength char(8)= '00:00:00'  
  9. )  
  10. AS  
  11. DECLARE @ReturnInfo varchar(255)  
  12. IF ISDATE('2000-01-01 ' + @DelayLength + '.000') = 0  
  13. BEGIN  
  14. SELECT @ReturnInfo = 'Invalid time ' + @DelayLength   
  15. + ',hh:mm:ss, submitted.';  
  16. -- This PRINT statement is for testing, not use in production.  
  17. PRINT @ReturnInfo   
  18. RETURN(1)  
  19. END  
  20. BEGIN  
  21. WAITFOR DELAY @DelayLength  
  22. SELECT @ReturnInfo = 'A total time of ' + @DelayLength + ',   
  23. hh:mm:ss, has elapsed! Your time is up.'  
  24. -- This PRINT statement is for testing, not use in production.  
  25. PRINT @ReturnInfo;  
  26. END;  
  27. GO  
  28. /* This statement executes the dbo.TimeDelay_hh_mm_ss procedure. */  
  29. EXEC TimeDelay_hh_mm_ss '00:00:10';  
  30. GO 

执行结果:

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-04-16 15:44:10

可管理性SQL Server

2009-03-17 13:25:13

查询迁移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-10-11 09:05:40

SQL Server

2009-04-08 09:29:34

SQL Server新特性Resource Go

2010-08-05 09:07:24

2010-05-13 10:00:10

SQL Server

2013-05-08 10:01:55

SQL Server 数据备份备份与还原

2011-03-15 10:22:42

SQL Server 联机事务处理

2009-04-16 17:03:12

报表开发工具报表制作SQL Server

2013-03-13 09:53:50

SQL Server

2010-07-06 10:36:35

SQL Server

2010-06-28 08:37:58

SQL Server
点赞
收藏

51CTO技术栈公众号