2007. 7. 20. 18:45
[DB]
/****************************************
커서에들어갈데이터확인
*****************************************/
SELECT
CNT
FROM
(
SELECT 1 CNT
UNION ALL
SELECT 2 CNT
UNION ALL
SELECT 3 CNT
) A
/****************************************
커서에데이터생성
*****************************************/
DECLARE CUR CURSOR
FOR
SELECT
CNT
FROM
(
SELECT 1 AS CNT
UNION ALL
SELECT 2 AS CNT
UNION ALL
SELECT 3 AS CNT
) A
DECLARE @CNT INT
/****************************************
커서에들어있는데이터사용
*****************************************/
OPEN CUR
FETCH NEXT FROM CUR INTO @CNT
WHILE(@@FETCH_STATUS = 0)
BEGIN
SELECT @CNT AS CNT
--
FETCH NEXT FROM CUR INTO @CNT
END
CLOSE CUR
DEALLOCATE CUR
* 이부분(DEALLOCATE CUR)은 try ~catch(예외처리)를 이용하여 오류가 났을때도 꼭 실행해줘야한다.
실행하지 않게되면 다음에 사용할때 같은 alias가 존재한다며 실행되지 않는다.
커서를 이용하여 각 Row의 데이터를 사용할수있다.
테이블 형태로 조회된 값을 활용하기에 적합하다.
하지만 성능이 다소 떨어져 최근에는 잘사용하질 않는다.
그러나 어느순간 꼭 필요할때가 있다. 그때를 대비하여 알아두었으면한다.
저자같은경우 조회된 값들을 이용하여 다른 저장 프로시저에 여러번 호출해야할때 이용한적이 있다.
━━━━━━━━━━━━━━━
by 한상국(han3925)
MAIL han3925@gmail.com
han3925@hotmail.com
BLOG pointnet.tistory.com
━━━━━━━━━━━━━━━