상세 컨텐츠

본문 제목

과제 - cursor문 C#으로 바꾸기(78페이지 그림 9-1)

청강컴정/DataBase

by luckey 2009. 3. 14. 10:59

본문


SQL을 잘 모르는 프로그래머들이 3세대 언어와 같은 형식으로 DataBase를 사용하기 위한 방법으로써 SQL의 문제를 해결하는 방법중에서 가장 느린 방법이다.
SQL안에서 직접 반복문을 실행하여 원하는 결과를 얻어낼수는 있지만 정말 부득이한 경우를 제외하고는 CURSOR를 쓰지 말기를 권하고 있다.
CURSOR는 Oracle, MySQL, MSSQL 에 모두 있다고 한다.

--반환받을 값의 변수를 선언한다.
DECLARE @f1 INT
DECLARE @f2 NVARCHAR(7)
DECLARE @f3 NVARCHAR(24)

DECLARE @SUM NVARCHAR(MAX)

--DECLARE ... CURSOR FOR SELECT 문을 사용하여 CURSOR를 선언한다.
--CURSOR선언시 CURSOR이름앞에는  @가 붙지 않는다.(선언된 CURSOR는 Object로 인식한다.)
DECLARE INFO_CUR CURSOR
FOR
    SELECT
        SN, NAME, TEL
    FROM
        MEMBER
    WHERE
        SN > 10000
--만들어진 CURSOR 를 OPEN을 이용해서 연다.
OPEN INFO_CUR

-- FETCH ... FROM .. INTO ...문을 사용하여 첫번쨰 레코드의 값을 가져온다.
FETCH NEXT FROM INFO_CUR INTO @f1, @f2, @f3

-- @@FETCH_STATUS : 0일 경우에는 FETCH 문이 정상적으로 실행되었다는 뜻이다.
-- 내용물이 있는 동안 실행된다.
WHILE @@FETCH_STATUS = 0 BEGIN
    SET @SUM = @SUM + CAST(@f1 AS NVARCHAR(12)) + @f2 + @f3
    FETCH NEXT FROM INFO_CUR INTO @f1, @f2, @f3
END

--CLOSE 문을 사용하여 CURSOR를 닫는다.
CLOSE INFO_CUR

-- DEALLOCATE..문을 사용하여 커서를 해제한다.
DEALLOCATE INFO_CUR

관련글 더보기

댓글 영역