SQL Server 2008 에서 SQL 의 WaitFor 사용 설명

2408 단어 WaitFor
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
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 totalk time of 00:00:10,in hh:mm:ss,has elapsed.Your time is up.소결:이것 은 가 벼 운 해결 방안 입 니 다.job 를 지정 할 수 있 는 권한 이 없 을 때 WaitFor 문 구 를 사용 하 는 것 을 고려 할 수 있 습 니 다.초승달 주:본 고의 판권 은 초승달 과 블 로그 원 이 공동으로 소유 하고 전재 할 때 출처 를 밝 혀 주 십시오.

좋은 웹페이지 즐겨찾기