MSSQL 테이블 반환 함수 사용법 및 예제 - 사용자 정의 함수

MSSQL 테이블 반환 함수 사용법 및 예제 – 사용자 정의 함수

MS SQL에서 사용자 정의 함수는 다른 프로그래밍 언어 함수처럼 매개 변수를 받아 복잡한 동작을 수행한 후 해당 결괏값을 반환합니다. 이때 반환 값은 단일 값 이거나 결과 집합일 수 있습니다. 매번 쿼리문을 작성하는 것보다 사용자 정의 함수를 만들어 놓고 필요할 때마다 사용하는 게 효율적인 경우가 많이 있습니다. 함수 유형은 스칼라 함수, 테이블 반환 함수, 시스템 함수가 있고 이번 포스트는 테이블 반환 함수에 대해서 알아보죠. 

테이블 반환 함수를 만드는 방법은 다중 문 테이블 반환 함수, 인라인 테이블 반환 함수 2가지 방법이 있습니다.

그럼 간단한 예제를 통해서 테이블 반환 함수 사용법에 대해서 알아보죠.

포스트 기준

– Microsoft SQL Server 2019

– SSMS 18.11

테이블 반환 함수를 생성하는 방법은 SSMS 툴로 테이블 반환 함수를 생성하는 방법과 쿼리문으로 생성하는 방법이 있는데 쿼리문으로 생성하는 방법에 대해서만 알아보죠.

테이블 반환 함수 사용 예제

1. SSMS 툴로 테이블 반환 함수 생성

▶ 데이터베이스 → 프로그래맹 기능 → 함수 → 테이블 반환 함수 → 새 인라인 테이블 반환 함수(I) 또는 새 다중 문 테이블 반환 함수(M)

데이터베이스 → 프로그래맹 기능 → 함수 → 테이블 반환 함수 → 새 인라인 테이블 반환 함수(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. 생성된 테이블 반환 함수 확인

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

함께 보면 좋은 게시글

위로 스크롤