투케이2K

31. (MSSQL/SQL) 커서 CURSOR 사용해 테이블 행 조회 결과 출력 실시 - CURSOR FOR OPEN , FETCH NEXT FROM 본문

MsSqlDB

31. (MSSQL/SQL) 커서 CURSOR 사용해 테이블 행 조회 결과 출력 실시 - CURSOR FOR OPEN , FETCH NEXT FROM

투케이2K 2021. 10. 3. 17:54

[개발 환경 설정]

개발 툴 : SSMS

개발 언어 : MSSQL


[소스 코드]

/*
[커서 CURSOR 사용해 테이블 행 조회 결과 출력 실시 - CURSOR FOR OPEN , FETCH NEXT FROM]
1. CURSOR FOR OPEN - 커서 생성 및 오픈을 실시합니다
2. FETCH NEXT : 현재 행의 바로 다음 행 결과를 반환합니다
3. @@FETCH_STATUS = 0 : FETCH 문이 성공적으로 수행된 경우를 나타냅니다
4. CLOSE : 오픈한 커서를 닫습니다
5. DEALLOCATE : 커서와 커서 이름 또는 커서 변수 간의 연결을 제거합니다
*/


DECLARE 

-- [커서 선언 부분]
V_CURSOR CURSOR FOR
	SELECT T_IDX, T_NAME, T_DEPT
	    FROM TEST_USER
	WHERE T_DEPT IN ('백제', '후백제')
	ORDER BY CONVERT(VARCHAR, T_DEPT) ASC;
OPEN V_CURSOR


DECLARE 
    -- [초기 변수 선언 부분]
    @V_IDX AS VARCHAR(100),
    @V_NAME AS VARCHAR(100),
	@V_DEPT AS VARCHAR(100);

	-- [FETCH NEXT : 현재 행의 바로 다음 행 결과 반환]
	FETCH NEXT FROM V_CURSOR INTO @V_IDX, @V_NAME, @V_DEPT;


-- [WHILE 반복 구문 선언 : FETCH 문이 성공적으로 수행된 경우]    
WHILE(@@FETCH_STATUS = 0)
BEGIN

	-- [단계별 결과 출력 실시]
    PRINT 'V_IDX : ' + CONVERT(VARCHAR, @V_IDX);
	PRINT 'V_NAME : ' + CONVERT(VARCHAR, @V_NAME);
	PRINT 'V_DEPT : ' + CONVERT(VARCHAR, @V_DEPT);

	-- [단계별 ROW 값 지정 실시]
	SELECT @V_IDX AS 'IDX', @V_NAME AS 'NAME', @V_DEPT AS 'DEPT'
	    FETCH NEXT FROM V_CURSOR INTO @V_IDX, @V_NAME, @V_DEPT;
	
END;
CLOSE V_CURSOR;
DEALLOCATE V_CURSOR;

[결과 출력]


[요약 설명]

/*

[커서 CURSOR 사용해 테이블 행 조회 결과 출력 실시 - CURSOR FOR OPEN , FETCH NEXT FROM]

1. CURSOR FOR OPEN - 커서 생성 및 오픈을 실시합니다

2. FETCH NEXT : 현재 행의 바로 다음 행 결과를 반환합니다

3. @@FETCH_STATUS = 0 : FETCH 문이 성공적으로 수행된 경우를 나타냅니다

4. CLOSE : 오픈한 커서를 닫습니다

5. DEALLOCATE : 커서와 커서 이름 또는 커서 변수 간의 연결을 제거합니다

*/


 

반응형
Comments