▶ 개요
테이블 반환 함수는 뷰 대신해서 table 데이터 형식을 반환 할 수 있다.
테이블 반환 함수는 inline TVFs 와 MultiStatement TVFs 으로 구분가능하다.
▶ 구성
1) inline TVFs
CREATE FUNCTION [함수명]
(@_param1 [parameter type], @_param2 [parameter type] ...)
RETURNS TABLE
AS
RETURN
(
SELECT *
FROM [table_1]
WHERE [column_1] = @_param1
AND ...
);
GO
2) MultiStatement TVFs
CREATE FUNCTION [함수명]
(@_param1 [parameter type], @_param2 [parameter type] ...)
RETURNS [반환할 테이블변수명] TABLE ( column_1 [column_1 type], column_2 [column_2 type] ... )
AS
BEGIN
DECLARE @_var int
...
INSERT [반환할 테이블변수명]
SELECT column_1
, column_2
FROM [table_1]
WHERE [column_3] = @_param1
AND ...
RETURN
END
GO
inline TVFs와 MultiStatement TVFs 차이는 BEGIN ~ END 선언부가 없다.
inline TVFs는 바로 RETURN 절에서 반환 집합을 계산한다.
MultiStatement TVFs는 반환테이블의 정의 및 다중 T-SQL 구문 사용 가능하다.
▶ 뷰, inline TVFs, MultiStatement TVFs 비교
Views |
Inline TVFs |
MultiStatement TVFs |
|
매개변수 허용여부( Accepts Parameters) |
N |
Y |
Y |
Expanded out by Optimiser |
Y |
Y |
N |
Can be Materialized in advance |
Y |
N |
N |
Is Updatable |
Y |
Y |
N |
다중 T-SQL 사용 가능여부 |
N |
N |
Y |
Can have triggers |
Y |
N |
N |
Can use side-effecting operator |
Y |
N |
N |
▶ 출처
https://technet.microsoft.com/en-us/library/ms191165(v=sql.105).aspx
http://stackoverflow.com/questions/4960137/table-valued-functiontvf-vs-view
'Database > MSSQL' 카테고리의 다른 글
[MSSQL] 스칼라 반환함수(Scalar function)(SF) (0) | 2017.01.07 |
---|---|
[MSSQL] 사용자정의함수(User-defined Functions)(UDFs) (0) | 2017.01.07 |
[MSSQL]SET Statements vol2 (0) | 2016.06.15 |
[MSSQL] Adding a string to a text column (0) | 2016.05.30 |
[MSSQL] 특정 필드 Update 시 Trigger 작동 (0) | 2016.03.23 |
▶ 개요
단일 값(single value) 반환
ex) GETDATE(), SUBSTRING()
▶ 구성
create function [함수명](@_param1 [parameter type], @_param2 [parameter type] ...)
returns [반환 type]
begin
declare @_rVal [반환 type] --임시변수
...
return @_rVal
end
▶ 예시 (정규식 문자열 치환)
- 구현sql
- 실행결과
▶ 출처
https://www.simple-talk.com/sql/t-sql-programming/sql-server-functions-the-basics/
http://hwoarang757.tistory.com/entry/MSSQL-%EC%96%B4%EC%84%A4%ED%94%88-RegEx-Replace-Function-%EC%97%AD%ED%95%A0-%ED%95%A8%EC%88%98-%EC%98%88%EC%A0%9C-0
'Database > MSSQL' 카테고리의 다른 글
[MSSQL] 테이블 반환 함수(Table-Valued User-Defined Functions)(TVFs) (0) | 2017.01.19 |
---|---|
[MSSQL] 사용자정의함수(User-defined Functions)(UDFs) (0) | 2017.01.07 |
[MSSQL]SET Statements vol2 (0) | 2016.06.15 |
[MSSQL] Adding a string to a text column (0) | 2016.05.30 |
[MSSQL] 특정 필드 Update 시 Trigger 작동 (0) | 2016.03.23 |
▶ 구성
MSSQL에서 지원하는 사용자정의 함수는 크게 두가지로 구분된다.
- 스칼라 반환함수(Scalar function)(SF)
- 테이블 반환함수(Table Valued Function)(TVF)
▶ 사용자정의함수를 사용하는 이유는 무엇인가?
1) 중복적으로 사용되는 코드를 함수화 함으로써 재사용성을 높힙니다. 이를 통해서 생산성 향상과 무결성 유지에 도움을 줍니다.
2) 간결한 코드작성을 가능토록 하여서 코드품질을 향상시킵니다.
3) 변경사항 발생시 유지보수를 용이하게 합니다.
그 외에도 생성한 인덱스를 인위적으로 사용하기 위해서, 임시테이블사용을 피함으로서 성능향상 등의 사유로 사용되어집니다.
▶ 출처
https://technet.microsoft.com/ko-kr/library/ms191165(v=sql.105).aspx
http://warehouseofdev.tistory.com/entry/mssql-%EC%8A%A4%EC%B9%BC%EB%9D%BC-%ED%95%A8%EC%88%98%EC%99%80-%ED%85%8C%EC%9D%B4%EB%B8%94-%EB%B0%98%ED%99%98-%ED%95%A8%EC%88%98
http://blog.naver.com/PostView.nhn?blogId=rocabilly&logNo=140133522180
http://www.mssql.org/LectureSQL/02_sql2k/ufn_05.htm
http://purumae.tistory.com/179
'Database > MSSQL' 카테고리의 다른 글
[MSSQL] 테이블 반환 함수(Table-Valued User-Defined Functions)(TVFs) (0) | 2017.01.19 |
---|---|
[MSSQL] 스칼라 반환함수(Scalar function)(SF) (0) | 2017.01.07 |
[MSSQL]SET Statements vol2 (0) | 2016.06.15 |
[MSSQL] Adding a string to a text column (0) | 2016.05.30 |
[MSSQL] 특정 필드 Update 시 Trigger 작동 (0) | 2016.03.23 |