저장 프로시저에서 값을 반환하려면 사용자 정의 세션 특정 변수를 사용해야 합니다. 변수 이름 앞에 @ 기호를 추가합니다.
예를 들어 변수 valido에 @symbol을 사용합니다. 동일한 구문은 다음과 같습니다.
SELECT @valido;
select 문을 사용할 때마다 @anyVariableName을 사용해야 합니다. 구문은 다음과 같습니다.
SELECT @anyVariableName;
다음은 반환 값 저장 프로시저의 데모입니다. 저장 프로시저를 생성하는 쿼리는 다음과 같습니다.
mysql> create procedure ReturnValueFrom_StoredProcedure -> ( -> In num1 int, -> In num2 int, -> out valido int -> ) -> Begin -> IF (num1> 4 and num2 > 5) THEN -> SET valido = (num1+num2); -> ELSE -> SET valido = (num1-num2); -> END IF; -> select @valido; -> end // Query OK, 0 rows affected (0.32 sec) mysql> DELIMITER ;
CALL 명령을 사용하여 저장 프로시저를 호출합니다. 쿼리는 다음과 같습니다.
mysql> call ReturnValueFrom_StoredProcedure(10,6,@TotalSum); +---------+ | @valido | +---------+ | NULL | +---------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.01 sec)
이제 select 문을 사용하여 저장 프로시저의 결과를 확인합니다. 쿼리는 다음과 같습니다.
mysql> select @TotalSum;
다음은 출력입니다.
+-----------+ | @TotalSum | +-----------+ | 16 | +-----------+ 1 row in set (0.00 sec)
이제 두 값의 차이에 대한 두 번째 호출입니다. 저장 프로시저를 호출합니다.
mysql> call ReturnValueFrom_StoredProcedure(4,2,@TotalDiff); +---------+ | @valido | +---------+ | NULL | +---------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.01 sec)
select 문을 사용하여 사용자 정의 세션별 변수의 결과를 확인합니다. 쿼리는 다음과 같습니다.
mysql> select @TotalDiff;
다음은 출력입니다.
+------------+ | @TotalDiff | +------------+ | 2 | +------------+ 1 row in set (0.00 sec)