본문 바로가기

코딩 이야기/MS SQL

MSSQL 사용자 정의 함수

사용자 정의 함수 종류 및 사용 예

스칼라 함수

설명 : 단일 값을 반환하는 함수입니다.

         입력 매개변수를 받아 연산을 수행하고 하나의 결과 값을 반환합니다.

         반환 값의 데이터 형식은 INT, VARCHAR, DATE 등 모든 스칼라 데이터 형식이 될 수 있습니다.

 

예제 :

    -- 두 숫자의 합을 반환하는 스칼라 함수
    CREATE FUNCTION dbo.SumNumbers (@num1 INT, @num2 INT)
    RETURNS INT
    AS
    BEGIN
      RETURN @num1 + @num2;
    END;

    -- 함수 호출
    SELECT dbo.SumNumbers(10, 20);
  

테이블 반환 함수 (인라인)

설명 : 테이블 형식의 결과를 반환하는 함수입니다.

         하나의 SELECT 문을 사용하여 테이블을 반환합니다.

         인라인 테이블 반환 함수는 성능이 우수하며 뷰(View)와 유사하게 사용할 수 있습니다.

 

예제 :

    -- 특정 부서의 사원 목록을 반환하는 테이블 반환 함수 (인라인)
    CREATE FUNCTION dbo.GetEmployeesByDepartment (@deptId INT)
    RETURNS TABLE
    AS
    RETURN
      SELECT employee_id, first_name, last_name
      FROM employees
      WHERE department_id = @deptId;

    -- 함수 호출
    SELECT * FROM dbo.GetEmployeesByDepartment(90);
  

테이블 반환 함수 (다중 문)

설명 : 테이블 형식의 결과를 반환하는 함수입니다.

         여러 개의 SQL 문을 사용하여 테이블을 구성하고 반환합니다.

 

예제 :

    -- 특정 급여 범위의 사원 목록을 반환하는 테이블 반환 함수 (다중 문)
    CREATE FUNCTION dbo.GetEmployeesBySalaryRange 
                  (@minSalary INT, @maxSalary INT)
    RETURNS @employeeTable TABLE (
      employee_id INT,
      first_name VARCHAR(50),
      last_name VARCHAR(50)
    )
    AS
    BEGIN
      INSERT INTO @employeeTable
      SELECT employee_id, first_name, last_name
      FROM employees
      WHERE salary BETWEEN @minSalary AND @maxSalary;
      RETURN;
    END;

    -- 함수 호출
    SELECT * FROM dbo.GetEmployeesBySalaryRange(5000, 10000);
  

'코딩 이야기 > MS SQL' 카테고리의 다른 글

MSSQL 커서 사용법  (0) 2025.03.31
MSSQL 프로시저 사용법  (0) 2025.03.31
MSSQL UNION 사용 방법  (0) 2025.03.31
MSSQL 그룹 SELECT 사용법  (0) 2025.03.31
MSSQL DELETE 방법  (0) 2025.03.30