블로그 이미지
fiadot_old

칼퇴근을 위한 게임 서버 개발 방법론에 대한 심도있는 고찰 및 성찰을 위한 블로그!

Rss feed Tistory
Technical Article/펌 2005. 9. 22. 11:49

OUTPUT과 RETURN의 차이점.

OUTPUT 사용할때와 안사용할때의 차이점은? 이지헌 / hunt33



안녕하세요

CREATE PROCEDURE Test1
as
select Max(lk_no)+1
from LoanKind

exec Test1
이거랑

CREATE PROCEDURE Test2
@Code int OUTPUT
as
select @Code=Max(lk_no)+1
from LoanKind

declare @Code int
exec Test2 @Code output
select @Code
의 차이점은 모죠?

퀴리문석기에서 어차피 결과는 똑같이 나오는데 왜 OUTPUT을 사용하는거죠?






2002-11-15 오전 9:50:49 / 번호: 32126 / 평점: (-)

Re: 저의 생각 입니다.... 박진호 / pjh1365




제 같은 경우는 output 를 사용하는 경우는 배치 작업을 할 경우

그 결과 값이 정상적으로 처리 되었는지를 확인하기 위해서 많이 사용합니다.

간단한 프로시져는 그냥 작업을 합니다

또하나 output 을 사용해서 원하는 값만을 간단히 구할수도 있으니 좋구요

아니면 값을 하나씩 다시 패치 해야 하는 번거러움이 있습니다.

그래서 제 경우는 결과 값을 꼭 구해야 하는 것은 output 문장을 사용합니다.

이건 제 경우 입니다.

정확히 아시는 분 다시 한번 부탁 합니다.





2002-11-15 오전 11:16:36 / 번호: 32132 / 평점: (-)

Re: OUTPUT 파라미터와 return값, 레코드셋의 차이 이윤호 / nawhat



sp를 작성중에 내부에서 Select 하시는 경우는
그 결과값이 하나라고 하더라도 레코드셋으로 반환됩니다.

return 값으로 사용할 수 있는 것은 정수형뿐이고요.
한번 sp 실행에 하나의 값만 반환합니다.

OUTPUT 파라미터의 경우는 여러 타입으로 반환가능하고,
한번 sp 실행에 파라미터를 여러개 사용한다면 그 개수만큼 반환값을 얻을 수 있죠.


QA에서 사용하실때는 그 차이를 크게 못느끼실 수 있지만, ADO의 COMMAND 를 사용해서
호출하는 경우에 그 차이는 큽니다.
일단 레코드셋을 리턴하는 경우에는 레코드셋을 close해야만 return값과 output을 받을 수 있고요.(ADO의 경우)
처음 예시로 주신 방법으로 사용한다면 레코드셋에서 값을 추출해야 사용할 수 있게되죠.
반면에, OUTPUT 파라미터와 return 값은 레코드셋에서의 추출없이 바로 변수로 사용가능합니다.
단 return값은 정수형으로밖에 반환되지 않으며, 한번에 하나의 값밖에 얻을 수 없습니다.

저의 경우 return값은 sp의 성공여부나 에러발생시 에러번호를 리턴하고, OUTPUT은 한 레코드 정보만 받을때 사용하고요, 레코드셋이 필요한 경우에는 레코드셋을 반환시킵니다.
,
TOTAL TODAY