Computer >> 컴퓨터 >  >> 프로그래밍 >> SQL Server

SQL Server 함수(FUNCTION) 완벽 가이드: 생성부터 삭제까지

함수(Function)는 데이터베이스에서 여러 문장을 하나로 묶어 재사용할 목적으로 만들어진 객체입니다. SQL Server에서는 한 번 만들어 둔 함수를 저장해 놓고, 필요할 때마다 매개변수를 전달하고 그 결과값을 반환받아 활용할 수 있습니다.

이 글에서는 SQL Server에서 함수를 생성하고 삭제하는 방법을 구문과 예제를 통해 자세히 살펴보겠습니다.

CREATE FUNCTION(함수 생성)

기본 구문

SQL Server에서 함수를 생성하려면 다음과 같은 구문을 사용합니다.

CREATE FUNCTION [schema_name.] function_name
([@parameter [AS] [type_schema_name.] datatype
[= default] [READONLY]
, @parameter [AS] [type_schema_name.] datatype
[= default] [READONLY]]
)

RETURNS return_datatype

[WITH {ENCRYPTION
| SCHEMABINDING
| RETURNS NULL ON NULL INPUT
| CALLED ON NULL INPUT
| EXECUTE AS Clause]

[AS]

BEGIN

[declaration_section]

executable_section

RETURN return_value

END;

주요 매개변수 설명:

  1. schema_name: 함수가 소속된 스키마의 이름입니다.
  2. function_name: 생성할 함수에 부여할 이름입니다.
  3. @parameter: 함수에 전달되는 하나 이상의 매개변수입니다.
  4. type_schema_name: 매개변수 데이터 타입이 속한 스키마 이름(있는 경우)입니다.
  5. datatype: @parameter의 데이터 타입입니다.
  6. Default: @parameter에 지정되는 기본값입니다.
  7. READONLY: @parameter가 함수 내부에서 덮어쓰기될 수 없음을 의미합니다.
  8. return_datatype: 함수가 반환하는 값의 데이터 타입입니다.
  9. ENCRYPTION: 함수의 소스 코드가 시스템에 일반 텍스트로 저장되지 않도록 암호화합니다.
  10. SCHEMABINDING: 참조 대상 객체가 변경되어 함수에 영향을 주지 않도록 스키마에 바인딩합니다.
  11. RETURNS NULL ON NULL INPUT: 전달된 매개변수 중 하나라도 NULL이면 함수가 별도의 연산 없이 NULL을 반환합니다.
  12. CALLED ON NULL INPUT: 매개변수가 NULL이더라도 함수가 정상적으로 실행됩니다.
  13. EXECUTE AS 절: 함수를 실행할 보안 컨텍스트를 지정합니다.
  14. return_value: 함수가 최종적으로 반환하는 값입니다.

생성 예제

CREATE FUNCTION fuNhanvien
(@nhanvien_id INT)

RETURNS VARCHAR(50)

AS

BEGIN

DECLARE @nhanvien_name VARCHAR(50);

IF @nhanvien_id < 10
SET @nhanvien_name = 'Smith';
ELSE
SET @nhanvien_name = 'Lawrence';

RETURN @nhanvien_name;

END;

위 예제에서 만든 함수의 이름은 fuNhanvien이며, INT 데이터 타입의 @nhanvien_id 매개변수를 하나 받습니다. 이 함수는 실행 결과로 RETURNS 문에 명시된 대로 VARCHAR(50) 타입의 값을 반환합니다.

함수를 생성한 후에는 아래와 같이 SELECT 문에서 직접 호출하여 사용할 수 있습니다.

USE [test]
GO

SELECT dbo.fuNhanvien(8);

GO

DROP FUNCTION(함수 삭제)

함수를 성공적으로 생성했다 하더라도, 더 이상 사용하지 않거나 로직을 변경해야 하는 등의 이유로 데이터베이스에서 해당 함수를 제거해야 하는 경우가 발생할 수 있습니다.

기본 구문

함수를 삭제하려면 다음과 같은 구문을 사용합니다.

DROP FUNCTION function_name;

매개변수:

function_name: 삭제하고자 하는 함수의 이름입니다.

삭제 예제

DROP FUNCTION fuNhanvien;

위 명령을 실행하면 데이터베이스에서 fuNhanvien 함수가 즉시 삭제됩니다. 단, 삭제 작업은 되돌릴 수 없으므로 실행 전에 해당 함수가 다른 곳에서 참조되고 있지 않은지 반드시 확인하는 것이 좋습니다.