Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 저장 프로시저에서 OUT 매개변수 활용하는 방법

MySQL의 저장 프로시저(Stored Procedure)는 입력용 매개변수(IN)와 출력용 매개변수(OUT)를 함께 사용할 수 있습니다. 이번 글에서는 하나의 매개변수로 값을 입력받고(IN), 두 번째 매개변수로 결과를 반환하는(OUT) 저장 프로시저를 만드는 방법을 알아보겠습니다.

1. IN과 OUT 매개변수가 있는 저장 프로시저 생성

아래 예제는 정수 하나를 입력받아 제곱근을 계산한 뒤, OUT 매개변수를 통해 결과를 반환하는 저장 프로시저입니다.

mysql> delimiter //
mysql> create procedure Sp_SQRT(IN Number1 INT, OUT Number2 FLOAT)
-> Begin
-> set Number2=sqrt(Number1);
-> end;
-> //
Query OK, 0 rows affected (0.24 sec)
mysql> delimiter ;

여기서 Number1은 프로시저에 전달되는 입력값이고, Number2는 계산 결과를 담아 외부로 내보내는 출력 매개변수입니다. sqrt() 함수를 사용해 입력값의 제곱근을 구해 Number2에 대입합니다.

2. 저장 프로시저 호출하기

저장 프로시저를 호출할 때는 OUT 매개변수의 결과를 받을 사용자 변수(@로 시작하는 변수)를 함께 전달해야 합니다. 기본 문법은 다음과 같습니다.

CALL yourStoredProcedureName(anyIntegerValue,@anyVariableName);

프로시저 실행 후에는 SELECT 문으로 해당 변수에 저장된 값을 확인할 수 있습니다.

SELECT @anyVariableName;

3. 실제 실행 예제

앞에서 만든 'Sp_SQRT'라는 이름의 저장 프로시저를 호출해 보겠습니다. 36을 입력값으로 전달하고, 결과는 @MySquareRootNumber 변수에 저장합니다.

mysql> call Sp_SQRT(36,@MySquareRootNumber);
Query OK, 0 rows affected (0.02 sec)

이제 SELECT 문으로 @MySquareRootNumber 변수에 어떤 값이 저장되었는지 확인합니다.

mysql> select @MySquareRootNumber;

실행 결과는 다음과 같습니다.

+---------------------+
| @MySquareRootNumber |
+---------------------+
| 6 |
+---------------------+
1 row in set (0.00 sec)

정리

36의 제곱근인 6이 OUT 매개변수를 통해 사용자 변수에 정상적으로 저장된 것을 확인할 수 있습니다. 이처럼 MySQL 저장 프로시저에서 OUT 매개변수를 활용하면, 프로시저 내부의 계산 결과나 처리 상태를 호출한 쪽으로 손쉽게 전달할 수 있습니다. 여러 개의 OUT 매개변수를 사용하면 한 번의 호출로 여러 결과값을 동시에 받아올 수도 있습니다.