투케이2K

33. (MSSQL/SQL) 테이블 변수 선언 및 while 반복문 구문을 사용해 테이블 조회 결과 출력 실시 본문

MsSqlDB

33. (MSSQL/SQL) 테이블 변수 선언 및 while 반복문 구문을 사용해 테이블 조회 결과 출력 실시

투케이2K 2021. 10. 3. 20:51

[개발 환경 설정]

개발 툴 : SSMS

개발 언어 : MSSQL


[소스 코드]

/*
[테이블 변수 선언 및 while 반복문 구문을 사용해 테이블 조회 결과 출력 실시]
1. declare begin end - PL/SQL 기본으로 쿼리, 문법을 실행할 수 있습니다
2. declare [선언부] - 변수, 상수를 선언할 수 있습니다
3. begin [실행부] - 제어, 반복문, 함수 등 다양한 로직 기술을 실행합니다
4. end [종료부] - 실행된 로직의 종료를 선언합니다
5. set [할당] - 선언한 변수에 값을 할당할 수 있습니다
6. print [출력] - 결과물을 출력할 때 사용합니다
7. while - 지정한 단계 만큼 반복문을 수행할 수 있습니다
*/


DECLARE 

-- [임시 테이블 변수 부분]
@V_TABLE TABLE 
(
    V_ROW INT IDENTITY(1,1) NOT NULL, -- 자동 인덱스 증가
    V_NAME VARCHAR(100),
    V_DEPT VARCHAR(100)
);


-- [임시 테이블에 실제 테이블 데이터 저장 실시]
INSERT INTO @V_TABLE(V_NAME, V_DEPT)
    SELECT T_NAME, T_DEPT 
       FROM TEST_USER
    WHERE T_DEPT IN ('백제', '후백제')
    ORDER BY T_DEPT DESC;


DECLARE 
    -- [초기 변수 선언 부분]
    @M_ROW_NOW AS INT,
    @M_ROW_MAX AS INT,

    @M_NAME AS VARCHAR(100),
    @M_DEPT AS VARCHAR(100);


    -- [반복문 수행 행 변수에 값 삽입 실시]
    SELECT @M_ROW_NOW = MIN(V_ROW), @M_ROW_MAX = MAX(V_ROW) FROM @V_TABLE;


-- [WHILE 반복 구문 선언]    
WHILE(@M_ROW_NOW <= @M_ROW_MAX)
BEGIN

	-- [SELECT 결과 매핑 실시]
	SELECT @M_NAME = V_NAME, @M_DEPT = V_DEPT
	    FROM @V_TABLE
	WHERE @M_ROW_NOW = V_ROW;

	-- [Print 결과 출력 실시]
	PRINT '행 번호 : ' + CONVERT(VARCHAR, @M_ROW_NOW);
	PRINT '이름 : ' + CONVERT(VARCHAR, @M_NAME);
	PRINT '부서 : ' + CONVERT(VARCHAR, @M_DEPT);
	PRINT '';
	
	-- [카운트 증가 실시]
	SET @M_ROW_NOW = @M_ROW_NOW + 1;
END;

[결과 출력]


[요약 설명]

/*

[테이블 변수 선언 및 while 반복문 구문을 사용해 테이블 조회 결과 출력 실시]

1. declare begin end - PL/SQL 기본으로 쿼리, 문법을 실행할 수 있습니다

2. declare [선언부] - 변수, 상수를 선언할 수 있습니다

3. begin [실행부] - 제어, 반복문, 함수 등 다양한 로직 기술을 실행합니다

4. end [종료부] - 실행된 로직의 종료를 선언합니다

5. set [할당] - 선언한 변수에 값을 할당할 수 있습니다

6. print [출력] - 결과물을 출력할 때 사용합니다

7. while - 지정한 단계 만큼 반복문을 수행할 수 있습니다

*/


 

반응형
Comments