사용자 정의 함수
사용자 정의 함수(user-defined function, UDF)는 일반적으로는 함수가 기본적으로 프로그램이나 환경 안에 내장되어 있다는 가정 하에 프로그램이나 환경의 사용자가 제공하는 함수이다.
베이직 언어
[편집]베이직 프로그래밍 언어의 일부 오래된 구현체에서 사용자 정의 함수는 "DEF FN" 문법을 사용하여 정의된다. 더 많은 종류의 현대의 베이직은 구조화된 프로그래밍 패러다임에 영향을 받았으며, 여기에서 코드 대부분이 사용자 정의 함수나 프로시저로 작성되어 있고, 이 개념은 실질적으로 과도하게 사용된다.
데이터베이스
[편집]SQL 데이터베이스에서 사용자 정의 함수는 SQL 문에서 평가할 수 있는 함수를 추가함으로써 데이터베이스 서버의 기능을 확장하기 위한 장치를 제공한다. SQL 표준은 스칼라와 테이블 함수를 구별한다. 스칼라 함수는 하나의 값 또는 NULL만을 반환하지만, 테이블 함수는 각 줄이 하나 이상의 열로 된, 0개 이상의 열을 이루는 (관계형) 테이블을 반환한다.
SQL에서 사용자 정의 함수는 CREATE FUNCTION
문을 사용하여 선언된다. 이를테면, 섭씨를 화씨로 변환하는 함수는 다음과 같이 선언할 수 있다:
CREATE FUNCTION dbo.CtoF(Celsius FLOAT)
RETURNS FLOAT
RETURN (Celsius * 1.8) + 32
만들어진 사용자 정의 함수는 SQL 문의 식에서 사용될 수 있다. 이 쿼리는
SELECT Name, CtoF(BoilingPoint)
FROM Elements
각 줄에서 이름과 끓는점을 가져온다. 열의 값을 화씨의 값으로 변환하기 위해 위에 선언된 CtoF 사용자 정의 함수를 호출한다.
SQL 서버 2000
[편집]1. 다음의 MyFunction은 기반이 되는 뷰 MyView 보다 더 빠르게 수행되는 함수 래퍼의 예이다:
CREATE FUNCTION MyFunction()
RETURNS @Tbl TABLE
(
StudentID VARCHAR(255),
SAS_StudentInstancesID INT,
Label VARCHAR(255),
Value MONEY,
CMN_PersonsID INT
)
AS
BEGIN
INSERT @Tbl
(
StudentID,
SAS_StudentInstancesID,
Label,
Value,
CMN_PersonsID
)
SELECT
StudentID,
SAS_StudentInstancesID,
Label,
Value,
CMN_PersonsID
FROM MyView -- where MyView selects (with joins) the same columns from large table(s)
RETURN
END
2. 마이크로소프트 SQL 서버 2005에서 동일 코드 실행의 결과는 정반대이다: 뷰는 함수 래퍼 보다 더 빠르게 실행된다.
CREATE FUNCTION CubicVolume
-- Input dimensions in centimeters
(
@CubeLength decimal(4,1),
@CubeWidth decimal(4,1),
@CubeHeight decimal(4,1)
)
RETURNS decimal(12,3)
AS
BEGIN
RETURN(@CubeLength * @CubeWidth * @CubeHeight)
END
아파치 하이브
[편집]아파치 하이브는 정규 사용자 정의 언어(UDF)뿐 아니라 사용자 정의 집계 함수(UDAF)와 테이블 생성 함수(UDTF)도 정의한다.[1] 하이브는 개발자가 자바로 사용자 정의 함수를 만들 수 있게 한다.[2]
각주
[편집]- ↑ “LanguageManual UDF - Apache Hive - Apache Software Foundation”. 2015년 6월 26일.
- ↑ “HivePlugins - Apache Hive - Apache Software Foundation”. 2015년 6월 26일.
외부 링크
[편집]- (영어) Microsoft SQL Server reference for CREATE FUNCTION
- (영어) MySQL manual section on UDFs Archived 2016년 8월 21일 - 웨이백 머신
- (영어) DB2 CREATE FUNCTION statement[깨진 링크(과거 내용 찾기)]