IT_DBMS/MSSQL

함수 작성 구문

JJun ™ 2006. 3. 9. 10:18




- 스칼라 함수 작성구문 -

 

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

 

------------------------------------------------------------------------------

 

[예제]

 

create function F_cal
        (
               @AA int,
               @BB int
         )
/*()가 들어가야한다.*/

returns int

as

 begin
    declare @gob int
    set @gob = @AA*@BB
    return @gob
 end
go

 

select dbo.F_cal(5,5) 결과값 /*결과값은 출력될 테이블의 컬럼명으로 들어감*/

/* 출력부분 사용자 정의 함수를 사용할 때 소유주명(dbo)도 적어줘야 한다. */

 

 

=====================================================================================

 

 

 

- 인라인 테이블 함수 작성구문 -

 

Create function 함수이름

    (@변수1,@변수2,...)

Returns table

    [with encryption|with schemabinding]

[AS]

    Return(select문)

-------------------------------------------------------------------------

[예제]

 

use northwind

 

select * from customers

/*테이블 확인*/

create function F_wind
  (
    @a varchar(10)
  )

returns table
as

return (
          select customerID, companyname
          from customers
          where  region = @a
         )
go

/*인라인 테이블 함수 정의*/

 

/*결과값 출력*/

select * from dbo.F_wind('BC') /*①*/

select customerID, companyname from customers where region = 'bc' /*②*/

/*①과 ②의 출력 결과는 같다.*/

 

 

======================================================================================

 

 

- 다중문 테이블 함수 작성구문 -

 

Create function 함수이름

(@변수 데이터 타입,

 @변수 데이터 타입)

 

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

     [with encryption|with schemabinding]

[As]

     Begin

         insert @변수

         select문

         return

     End


--------------------------------------------------------------------------------------

 

[예제]

 

create function F_multi
     (@관계 char(10))
returns @연락처 table ( 
                                이름 char(8) primary key,
                                관계 char(10),
                                핸드폰번호 char(15),
                                우편번호 char(8),
                                주소 varchar(50)
                             )
as
 begin
   insert @연락처
   select 이름,관계,핸드폰번호,우편번호,주소
   from 개인신상
   where 관계 = @관계
   return
 end

/*다중문 테이블 함수 정의*/

 

select * from dbo.F_multi('고객')
where 주소 like '미국%'

/*결과값 출력*/


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

트리거(Trigger)  (0) 2006.03.09
사용자 정의 함수  (0) 2006.03.09
프로시저 연습하기 3  (0) 2006.03.08
프로시저 연습하기 2  (0) 2006.03.08
프로시저 연습하기 1  (0) 2006.03.08