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시간을 줄수있다.
'기타 언어 > 데이터베이스(SQL)' 카테고리의 다른 글
오라클 12c (Oracle) 에서 테스트를 위해 샘플 스키마 설치하기 (0) | 2014.04.21 |
---|---|
Oracle sql developer 로 tablespace 테이블 스페이스 만들기 (1) | 2014.04.19 |
오라클 (Oracle) 쿼리 구간별 시간 체크 하기 (0) | 2014.04.13 |
오라클 (Oracle) 11g 를 위한 토드(Toad) 무료 버전 다운받기 (2) | 2014.04.07 |
MSSQL 2012 무료버전 Localdb 설치 및 테스트 (5) | 2014.03.09 |
오라클(Oracle) 대용량 데이터 토드(Toad)를 이용해서 넣기 (0) | 2012.12.11 |
MSSQL 2000 기본 통신 포트 1433 이 막혀 접속장애 에러가 나는 경우 (0) | 2012.11.26 |
ER WIN 으로 테이블 스키마를 엑셀로 출력하기 (0) | 2012.11.12 |