본문 바로가기

데이터베이스

저장 프로시저 Output 파라미터

저장 프로시저에 output 파라미터를 만들기 위해서는 아래와 같이 적어 주어야 한다.

 

# Syntax

파라미터_이름 데이터_타입 OUTPUT

 

저장 프로시저는 많은 output 파라미터를 가질 수 있다. 추가로 output 파라미터는 integer, date, 여러 character등의 데이터 타입이 될 수 있다.

 

예를 들어 아래 저장 프로시저는 @Book_Count output 파라미터를 통해 조회된 결과의 행수를 리턴한다. 

 

Create Proc uspFindBookByModel (

    @Model_Year smallint,

    @Book_Count int OUTPUT

) as 

begin

    select Book_Name,

            Book_Price

    From BookStore.Books

    Where Model_Year = @Model_Year;

 

    select @Book_Count = @@ROWCOUNT;

end;

 

위 저장 프로시저를 보면 먼저 @Product_Count에 정수형에 OUTPUT 파라미터를 만든걸 볼 수 있다. 

 

@Book_Count int OUTPUT

 

그리고 select문 뒤, @ROWCOUNT를 이용해 select 쿼리에서 조회한 결과행수를 @Book_Count 파라미터에 할당하는 걸 볼 수 있다. 

 

OUTPUT 파라미터를 이용해서 저장 프로시저를 호출해 보자

 

저장 프로시저를 OUTPUT 파라미터를 같이 이용해 호출하기 위해 아래 2단계를 거쳐야 한다. 

 

1단계 OUTPUT 파라미터에 의해 전달될 값을 저장할 변수를 선언해야한다. 

2단계 저장 프로시저 내에 이 변수들을 사용해야 한다.

 

예를 들어 아래 uspFundBookByModel 프로시저를 보자.

 

Declare @Count int; -- 변수 선언을 했다. 프로시저의 output 파라미터의 값이 여기 저장된다.

 

exec uspFindBookByModel @Model_Year = 2020, @Product_Count = @Count OUTPUT; -- 이 프로시저를 실행하자 파라미터들도 적어보자. model_year은 2020이고 @count에는 output 파라미터의 값 @Book_Count의 값이 할된된다.

 

참고로 아래처럼 저장프로시저를 실행해 주어도 된다. 

exec uspFindBookByModel 2020, @Count OUTPUT;

 

명심할 것은 만약 @Count 뒤에 output 키워드를 잊어버리면 @count의 값은 null이 된다. 

 

반환 받은 @count의 값이 궁금하니 확인해보자.

 

select @count as '책수량';

 

 

'데이터베이스' 카테고리의 다른 글

개체와 개체 타입  (0) 2020.06.29
ER 모델  (0) 2020.06.29
논리적 모델링  (0) 2020.06.26
개념적 모델링  (0) 2020.06.25
데이터베이스 생명주기  (0) 2020.06.24