MSSQL - 프로시저 매개변수(IN/OUT) 입력, 출력 활용하기

 

INPUT : 입력 매개변수

  • 변수 선언시 디폴트 값
  • 입력한 값을 프로시저 내에서 사용 할 수 있게 해주는 변수

입력 매개변수 구문

  • 기존의 프로시저 생성 구문과 같음
  • IN 키워드를 생략해도 기본 값은 IN이기 때문에 상관 없음
CREATE PROCEDURE -- 프로시저명
	-- @매개변수 데이터타입 IN
AS
BEGIN
	-- SQL문
END

입력 매개변수 사용 예시

  • 이름이 사라인 애완동물의 나이 확인하기
    • 이름 : 입력 매개변수 (inVar)
    • 나이 : 쿼리 실행 결과 (select ~)
-- 기본 테이블 정보 확인
select * from MyPet

-- 프로시저 생성
CREATE PROC inVarTest
	-- 입력 매개변수 선언, 사용자로부터 값을 입력 받는 변수, IN 생략 가능
	@inVar nvarchar(10) IN
AS
BEGIN
	-- 입력 매개변수를 활용하여 이름 확인 후, 나이 조회
	select age from MyPet where name=@inVar
END

-- 프로시저 실행
-- 매개변수는 프로시저명 뒤에 나열
EXEC inVarTest "sara";

  • 기본 테이블 정보 확인


  • 프로시저 실행 결과

반응형

OUTPUT : 출력 매개변수

  • 변수 선언시 뒤에 OUTPUT 키워드 명시 (Default=INPUT)
  • 프로시저 내에서 실행된 결과값을 되돌려 받을 수 있게 해주는 변수

출력 매개변수 구문

  • 기존의 프로시저 생성 구문과 같음
  • 단, OUT 키워드를 생략하면 입력 매개변수가 되므로 꼭 입력
CREATE PROCEDURE -- 프로시저명
	-- @매개변수 데이터타입 OUT
AS
BEGIN
	-- SQL문
END

출력 매개변수 사용 예시

  • 이름이 사라인 애완동물의 나이 확인하기
    • 이름 : 입력 매개변수 (inVar)
    • 나이 : 출력 매개변수 (outVar)
  • 출력 매개변수 사용시 확인사항
    • 프로시저 내에서 출력 매개변수 뒤에 OUT 키워드 사용
    • 프로시저 실행시 출력 매개변수의 값 반환
      • 값을 반환 받을 변수 필요
      • 출력 매개변수 뒤에 OUTPUT 키워드 사용
        • OUTPUT 키워드가 없으면 NULL 값 반환
  • 참고 : 해당 쿼리는 이해를 도울 예제를 목적으로 작성하였습니다.
-- 기본 테이블 정보 확인
select * from MyPet

-- 프로시저 생성
CREATE PROC outVarTest
    -- 입력 매개변수 선언, 사용자로부터 값을 입력 받는 변수, IN 생략 가능
    @inVar nvarchar(10) IN
    -- 출력 매개변수 선언, 실행 결과를 매개변수에 저장하여 반환 할 수 있음
    -- !!! OUT 키워드 필수 !!!
    @outVar int OUT
AS
BEGIN
    -- 입력 매개변수를 활용하여 이름 확인
    -- 출력 매개변수에 나이를 저장 후 조회
    select @outVar=age from MyPet where name=@inVar
END

-- 프로시저 실행
-- 매개변수는 프로시저명 뒤에 나열
-- 출력 매개변수의 경우, 값을 반환 받을 변수 필요
-- 출력 매개변수는 OUTPUT 키워드를 사용하여 값 반환
DECLARE @outValue int;
EXEC outVarTest "sara" @outValue OUTPUT;
select @outValue;

  • 프로시저 실행 결과
    • 첫번째 결과
      • 프로시저 실행시 프로시저 안에 있는 select문
    • 두번째 결과
      • 출력 매개변수의 값을 반환받은 변수(outValue)의 값 확인(select @outValue)