▶ 개요
테이블 반환 함수는 뷰 대신해서 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 |