Please Enable JavaScript!
Gon[ Enable JavaScript ]

MSSQL Stored Procedure 만들때 Sleep 주기

기타 언어/데이터베이스(SQL)
반응형

MSSQL Stored Procedure 만들때 Sleep 주기

 

개발환경 : window 7 64bit, SQL Server 2012

 

데이터를 조회하고 For 문을 돌 때 로직을 수행하는데

Thread 처럼 시간간격을 주고자 할 때 가 있다.

 

 

먼저 샘플예제에서 사용한 Cursor 에 대한 설명을 하고자 한다.

데이터를 select 하고 그 row 데이터를 담는곳이 cursor 이다.

 

declare @idx nvarchar(10)

declare @name nvarchar(10)

 

declare hC cursor for

SELECT [uniq],[name] FROM [gon].[dbo].[user]

 

open hC

fetch next from hC into @idx, @name

 

while (@@FETCH_STATUS = 0)

    begin

        print @idx

        print @name

 

WAITFOR DELAY '0:0:5'

 

        fetch next from hC into @idx, @name

    end

close hC

deallocate hC

 

위 소스는 간단하게 만든 테이블에서 데이터를 조회한후 출력하는

예제이다. 먼저 Cursor 를 선언해야 하는데 선언후 그 뒤에 조회 쿼리를

적는다.

 

declare hC cursor for

SELECT [uniq],[name] FROM [gon].[dbo].[user]

 

그리고 open 을 이용해 cursor open 한후 fetch 문을 사용해

데이터를 bind 한다.

 

open hC

fetch next from hC into @idx, @name

 

그런후에 @@FETCH_STATUS 의 반환값이 0 이면 계속 실행하는 while 문을

작성하고 그 안에 로직을 넣는다. 반환값의 종류는 3가지이며 -1 (실패), -2(행없음)

0 (수행) 이다.

While 문 내에서의 로직은 간단한데 변수에 담긴 값을 print 을 사용해

출력해주고 다시 fetch 문을 사용해 변수에 값을 담는 것을 반복한다.

 

print @idx

print @name

 

fetch next from hC into @idx, @name

 

그리고 마지막에는 cursor 를 닫고 메모리에서 닫는다.

 

close hC

deallocate hC

 

이제 슬립코드를 보자.  WAITFOR DELAY 을 이용하며 시 : : 초 로 표현된다.

WAITFOR DELAY '0:0:5'  5초 간의 딜레이를 주는 것이 된다. 최대 24시간을 줄수있다.

 

반응형
Posted by 녹두장군1
,