IT_DBMS/MSSQL

사용자 정의 함수

JJun ™ 2006. 3. 9. 10:51

 

 

 

 

SQL server 2000에서 새롭게 추가된 기능으로

다른 일반 프로그래밍에서처럼 자유롭게 함수를 만들고 이를 활용할 수 있다.

사용자 정의 함수의 유형에는 크게 3가지 (스칼라, 인라인 테이블, 다중문 테이블 함수)가 있다.

 

 

 

 

스칼라 함수

 

: 단일한 결과값을 리턴하는 함수로 일반적으로 가장 많이 사용되어지는 함수이다.

 

 

<작성시 유의 사항>

 

- 파라메터를 정의할 때 괄호로 묶어주어야 한다.

  (상대적으로 프로시저는 괄호로 묶지 않는다.)

- 파라메터 정의 후 Returns문장과 리턴 될 값의 데이터 타입을 정의한다.

- Function Body는 Begin과 End문장으로 묶어 주어야 한다.

- Function Body 끝에  (End문장 전에) Return문장과 함께 Return될 값을 정의해 주어야 한다.

 

 

[스칼라 함수 (단일한 값을 리턴하는 함수) 작성구문]

 

Create Function 함수이름
   (@파라미터 데이터타입,
@파라미터 데이터타입,.....)
Returns 리턴값의 데이터타입
   [WITH ENCRYPTION | WITH SCHEMABINDING]
[AS]
   BEGIN
       Function Body
       Return 단일한 리턴값
   END

 

 

 

 

 

인라인 테이블 함수

 

: 테이블 형태의 결과값을 리턴하는 함수.

  인라인 테이블값의 함수에는 함수본문이 없으므로

  테이블이 단일 Select문의 결과집합이라고 할 수 있다.

  인라인 함수를 사용하면 매개 변수화된 뷰의 기능을 수행 할 수 있다.

 

 

<작성시 중의사항>

 

- Returns문 다음에 리턴되는 데이터타입으로  table을 정의한다.

- As문 다음에 Return문으로 Select문장을 포함한다.

 

 

[인라인 테이블 함수 작성구문]

 

Create function 함수이름

    (@변수1 데이터타입,@변수2 데이터타입,...)

Returns table

    [with encryption|with schemabinding]

[AS]

    Return(select문)

 

 

 

 

 

다중문 테이블 함수

 

: 테이블 형태의 결과값을 리턴하는 함수로 기본적인 기능은 인라인 테이블 함수와 비슷하지만

  리턴되어지는 테이블 형식을 직접 정의할 수 있다.

 

 

<작성시 주의사항>

 

- Return문 다음에 변수를 정의 하고 변수의 데이터 타입을 table로 정의하여 

   table자료형의 형식을 지정한다.

- Return문에서 정의한 테이블 변수에 데이터를 입력하기 위해서

   insert, select문장을 사용한다.

- SQL문 다음에 Begin~End문장으로 Function Body를 묶어 주어야 하며

   Function Body 마지막에 Return문장을 써주어야 한다.

 

 

[다중문 테이블 함수 작성구문]

 

Create function 함수이름

(@변수 데이터 타입,

 @변수 데이터 타입)

 

returns @변수 table (field1,field2..)

     [with encryption|with schemabinding]

[As]

     Begin

         insert @변수

         select문

         return

     End


'IT_DBMS > MSSQL' 카테고리의 다른 글

트리거 예제  (0) 2006.03.09
트리거(Trigger)  (0) 2006.03.09
함수 작성 구문  (0) 2006.03.09
프로시저 연습하기 3  (0) 2006.03.08
프로시저 연습하기 2  (0) 2006.03.08