MSSQL 테이블 반환 함수 사용법 및 예제 – 사용자 정의 함수
MS SQL에서 사용자 정의 함수는 다른 프로그래밍 언어 함수처럼 매개 변수를 받아 복잡한 동작을 수행한 후 해당 결괏값을 반환합니다. 이때 반환 값은 단일 값 이거나 결과 집합일 수 있습니다. 매번 쿼리문을 작성하는 것보다 사용자 정의 함수를 만들어 놓고 필요할 때마다 사용하는 게 효율적인 경우가 많이 있습니다. 함수 유형은 스칼라 함수, 테이블 반환 함수, 시스템 함수가 있고 이번 포스트는 테이블 반환 함수에 대해서 알아보죠.
테이블 반환 함수를 만드는 방법은 다중 문 테이블 반환 함수, 인라인 테이블 반환 함수 2가지 방법이 있습니다.
그럼 간단한 예제를 통해서 테이블 반환 함수 사용법에 대해서 알아보죠.
포스트 기준
– Microsoft SQL Server 2019
– SSMS 18.11
테이블 반환 함수를 생성하는 방법은 SSMS 툴로 테이블 반환 함수를 생성하는 방법과 쿼리문으로 생성하는 방법이 있는데 쿼리문으로 생성하는 방법에 대해서만 알아보죠.
테이블 반환 함수 사용 예제
1. SSMS 툴로 테이블 반환 함수 생성
▶ 데이터베이스 → 프로그래맹 기능 → 함수 → 테이블 반환 함수 → 새 인라인 테이블 반환 함수(I) 또는 새 다중 문 테이블 반환 함수(M)

2. 다중 문 테이블 반환 함수 예제
CREATE FUNCTION TFN_BS_DEMO_1 (@IN_P_ID NVARCHAR(50)) -- 매개 변수 : 학번
RETURNS @TEMP TABLE ( -- 반환 값(테이블 변수) : 점수 정보
P_ID NVARCHAR(50),
NAME NVARCHAR(50),
DEPART NVARCHAR(50),
GRADE SMALLINT,
S_ID NVARCHAR(50),
SUBJECT NVARCHAR(50),
SCORE SMALLINT,
CLASS NVARCHAR(10)
)
AS
BEGIN
-- 테이블 변수에 저장
INSERT INTO @TEMP
SELECT A.P_ID, -- 학번
B.NAME, -- 성명
B.DEPART, -- 학과
B.GRADE, -- 학년
A.S_ID, -- 과목코드
C.SUBJECT, -- 과목
A.SCORE, -- 점수
A.CLASS -- 등급
FROM BS_DEMO_8_3 A
INNER JOIN BS_DEMO_8_1 B ON A.P_ID = B.P_ID
INNER JOIN BS_DEMO_8_2 C ON A.S_ID = C.S_ID
WHERE A.P_ID = @IN_P_ID
RETURN
END
▶ 다 중문 테이블 반환 함수 사용 예제

3. 인라인 테이블 반환 함수 예제
CREATE FUNCTION TFN_BS_DEMO_2 (@IN_P_ID NVARCHAR(50)) -- 매개 변수 : 학번
RETURNS TABLE -- 반환 값 : 점수 정보
AS
RETURN (
SELECT A.P_ID, -- 학번
B.NAME, -- 성명
B.DEPART, -- 학과
B.GRADE, -- 학년
A.S_ID, -- 과목코드
C.SUBJECT, -- 과목
A.SCORE, -- 점수
A.CLASS -- 등급
FROM BS_DEMO_8_3 A
INNER JOIN BS_DEMO_8_1 B ON A.P_ID = B.P_ID
INNER JOIN BS_DEMO_8_2 C ON A.S_ID = C.S_ID
WHERE A.P_ID = @IN_P_ID
)
GO
▶ 인라인 테이블 반환 함수 사용 예제

4. 생성된 테이블 반환 함수 확인

함께 보면 좋은 게시글
- MSSQL 스칼라 함수 사용법 및 예제 – 사용자 정의 함수
- MSSQL 저장 프로시저 사용법(실행) 및 예제 (TRY…CATCH 등)
- MSSQL INSERT EXEC 프로시저 실행 결과 테이블에 저장하기
- MSSQL 테이블 변수 생성 및 사용 방법
- MSSQL 동적 쿼리 사용법, 저장 프로시저 및 함수 활용
이 글이 도움이 되셨다면 공유 부탁 드립니다.


![[SSMS] 로컬 서버(PC)에 설치한 MSSQL 서버 연결하는 방법](https://bluesharehub.com/wp-content/uploads/2022/02/img_41.png)
