백엔드/SQL
[SQL] User-Defined Functions (1)
leejiwoo21
2021. 12. 3. 02:49
User-Defined Functions(1)
SQL server에서도 사용할 함수를 직접 만들 수 있습니다.
Scalar Function
: 여러줄의 statement를 사용할 땐 BEGIN...END로 블록을 설정하고, 결과로 하나의 값을 반환하는 함수입니다.
Table-Valued Function
: 결과로 테이블 타입의 값을 반환하는 함수입니다.
함수 생성 및 수정
CREATE FUNCTION : 함수를 생성할 때 사용하는 구문입니다.
ALTER FUNCTION : 함수를 수정할 때 사용하는 구문입니다.
[]안에 있는 내용은 선택사항
Scalar Function 문법
CREATE [ or ALTER ] FUNCTION [스키마 이름] 함수이름
( [ { 인자이름 [AS] [스카마이름] 인자타입
[ = default ] [READONLY] } -- 디폴트값을 설정할 수 있다. READONLY는 인자의 수정이 불가능하게 합니다.
[ ,...n] ] // 여러개의 인자를 받을 수 있음
)
RETURNS 반환데이터타입
[ WITH < function_option> [ ,...n] ]
[AS]
BEGIN
함수 몸통 // function_body
RETURN scalar_expression -- 스칼라값 반환
END[;]
함수 생성
예시)
create function getSum(@a int, @b int, @c int)
returns int
as
begin
declare @d as int
set @d = @a + @b + @c
return @d
end
go
select dbo.getSum(3,5,7) -- 함수 실행
출력
함수 수정
예시)
alter function getSum(@a int = 10, @b int = 20, @c int= 10)
returns int
as
begin
declare @d as int
set @d = @a + @b + @c
return @d
end
go
select dbo.getSum(default,5,7) -- 함수 실행
출력
함수 삭제
문법
DROP FUNCTION {[ 스키마 이름. ] 함수이름} [,...n] -- 여러개를 한 번에 삭제할 수 있습니다.
예시)
drop function dbo.getSum
함수 삭제가 실패하는 경우
> 해당 함수를 참조하는 다른 함수가 있는 경우
> CHECK나 DEFAULT 제약조건에서 해당 함수를 사용하는 경우