상세 컨텐츠

본문 제목

DataBase함수 - 테이블함수

청강컴정/DataBase

by luckey 2009. 3. 9. 17:04

본문

테이블함수
* 값을 테이블형태로 넘겨준다. 넘겨주는 테이블은 한개이상이 될 수 없다.
* 테이블함수는 스칼라함수와 다르게 함수명만 적어주면 된다.

view와의 차이점
view의 경우 조건지정이 불가능하다.(where문을 사용못하는 것이 아니라 유동적인 조건 지정이 불가능한 것이다.)
예를들어 view의 경우 2005, 2006, 2007년도의 데이터가 각각 필요할 경우 해당하는 조건에 맞는 view를 모두 따로 생성하여야 하지만 테이블함수의 경우 한개만 만들어두고 넘겨주는 값만 다르게 하여 사용할 수 있는 것이다.

저장프로시져와의 차이점
저장프로시져의 경우 일단 모두 받은후에 C#이나 해당 프로그램상에서 코드로 정리하는 작업을 진행하여야 하나 테이블함수의 경우 원하는 데이터를 간추린후 다시한번 더 원하는 결과를 출력할 수 있는 장점이 있다.

테이블 함수 생성
create function 함수명
(
    변수명
)
RETURNS TABLE
AS
RETURN
(
    select문
)

create function GET_TBL_NEW_MEMBER
(
 @year int
)
RETURNS Table
as
return
(
  select *  from Person.Contact where year(ModifiedDate) = @year
)

실행방법 : select FirstName from GET_TBL_NEW_MEMBER(2005)

table함수는 스칼라함수와는다르게 함수명만 적어주면 사용이 가능하다.

테이블함수의 제약
- 저장프로시져처럼 여러개의 결과 테이블을 반환할 수 없다. 오직 한개의 결과 테이블만 반환한다.
- 원하는 형태의 테이블을 만들어 낼 수는 있지만 그 결과는 단 하나의 Select문 이어야 한다.
- 함수내부에서 업데이트 작업을 수행할 수 없다.
- 동적 execute 함수로 테이블을 반환할 수 없다. (execute ('select * from test') 와 같은 형태는 불가능)

관련글 더보기

댓글 영역