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
항해자님 답변 감사합니다^^
많은 도움이 되었습니다^^
프로시저에 대해 좀더 깊히있게 공부를 해야할거같습니다^^