Note/DB

MSSQL 커서(CURSOR) 사용 간단예제

Delia :D 2011. 6. 23. 15:01
** CURSOR 선언 ⇒ OPEN ⇒ FETCH ⇒ CLOSE **

select 한 결과를 변수에 담아
select 한 결과의 한 row씩 읽어 처리한다.
 
 

/* 변수 선언 */
DECLARE @rownum int,
@seq char(1),           /* select 한 컬럼을 담을 변수도 선언해야한다. */
@po_no varchar(30)

SET @rownum = 0;

/* 커서 선언 */ 
DECLARE page_cursor CURSOR FOR   /* 커서 선언 : page_cursor 라는 이름의 커서를 선언한다.  */
SELECT PO_NO, SEQ                   /* page_cursor 커서를 사용할 테이블을 명시한다.  */
FROM POHD
WHERE CUST_CD = 'D01428'


OPEN page_cursor      /* 커서를오픈한다. 커서를 사용하려면 일단 오픈해야한다. */
FETCH NEXT FROM page_cursor INTO @po_no,@seq   /* select한 PO_NO, SEQ를 @po_no,@seq 변수에 넣는다. */

/* 커서를이용해 한ROW씩 읽음 */
WHILE @@FETCH_STATUS = 0 /* 에러가 나지않을경우 */
BEGIN
SET @rownum = @rownum + 1;

/* SELECT 한 데이터의 현재 row 데이터를 가지고 수행할 작업 . 여기서는 INSERT를 수행한다. */
INSERT INTO TEMP_PAGE (
ROWNUM,NO,SEQ,USERID
) VALUES (
@rownum,@po_no,@seq,'TEST'
)

FETCH NEXT FROM page_cursor INTO @po_no,@seq /* 다음ROW로 이동 */
END

/* 커서 닫고 초기화 */
CLOSE page_cursor
DEALLOCATE page_cursor


'Note > DB' 카테고리의 다른 글

mssql2005 DB상태변경  (0) 2011.07.11
MSSQL 날짜관련함수  (0) 2011.06.23
MSSQL DB, Table 정보 조회  (0) 2011.06.23
MYSQL에서 Rownum 사용하기  (0) 2011.06.23
Mysql 문자열 관련 함수  (0) 2011.06.23