데이터베이스 개발자 질문과 답변 게시판
데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.
CREATE PROCEDURE kss_test
@MaxID SMALLINT OUTPUT
AS
BEGIN
SELECT @MaxID = MAX(number)
FROM test_test
END
GO
DECLARE @MID SMALLINT
EXECUTE kss_test @MID OUTPUT
SELECT '최대 nuber는', @MID , '번 입니다.'
(열이름없음) (열이름없음) (열이름없음)
----------------------------------------
1 최대number는 6 번입니다.
수정해서 올립니다.. 여기서 제가 궁금한것은..
프로시저 생성했을때 Max(number) 값이 @MaxID로 옮겨지게 되는데 ..
밑에 @MID 변수로 어떻게 옮겨지게 되는건지 알고싶습니다..
저는 OUTPUT 선언을 하게 되면 로컬변수로 옮겨진다라고 생각하고있는데 개인적으로 공부하려니 .. 어렵습니다..
도움좀 주세요..ㅠ
Comment 4
-
처리짱
2014.01.07 20:58
SELECT @MaxID = MAX(number)FROM test_test요게 궁금하다는 말씀인가요??언어마다 문법이 있는데 그 문법에 맞게 작성하는거죠...int a; 4바이트 짜리 데이터 타입을 선언하겠다... 이게 왜그래요? 질문 하는것과 같은 것일까요..? -
상구
2014.01.07 21:24
답변감사합니다..
그런게 아니라 말입니다..ㅜ
EXECUTE로 실행 할때말입니다... 매개변수를 넣는곳에
@MID 라는 로컬변수로 넣었는데 말입니다..
매개변수가 MAX 함수로 인해서 @MaxID가 위 결과처럼 6으로 바뀌는걸 알겠지말입니다.. 그런데..
출력할때 보면 @MaxID로 출력하는것이 아니라 SELECT '최대 nuber는', @MID , '번 입니다.'
이렇게 왜 @MID로 썻는데도.. @MaxID 값이 나온건지 궁금해서 말입니다..
정리가 안되서 죄송합니다 . 허접한글 신경써주셔서 감사합니다^^
-
항해자™
2014.01.08 00:05
프로시저 내부에서 어떤 변수를 사용했건 중요하지 않고, 호출할 때 기술한 변수로 내부에서 처리된 값을 받아올 변수이기 때문이지요,,,
사실은 아래와 같이 기술해야 합니다,,,
exec dbo.kss_test
@MaxID = @MID output
print @MID -
상구
2014.01.08 08:55
항해자님 답변 감사합니다^^
많은 도움이 되었습니다^^
프로시저에 대해 좀더 깊히있게 공부를 해야할거같습니다^^