Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

MySQL 저장 프로시저 반환 값?

<시간/>

저장 프로시저에서 값을 반환하려면 사용자 정의 세션 특정 변수를 사용해야 합니다. 변수 이름 앞에 @ 기호를 추가합니다.

예를 들어 변수 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)