IN 및 OUT을 사용하여 매개변수를 생성할 수 있습니다. IN은 입력 매개변수를 가져오는 데 사용하고 OUT은 출력에 사용할 수 있습니다.
구문은 다음과 같습니다.
DELIMITER // CREATE PROCEDURE yourProcedureName(IN yourParameterName dataType,OUT yourParameterName dataType ) BEGIN yourStatement1; yourStatement2; . . N END; // DELIMITER ;
먼저 테이블을 생성하겠습니다. 테이블 생성 쿼리는 다음과 같습니다.
mysql> create table SumOfAll -> ( -> Amount int -> ); Query OK, 0 rows affected (0.78 sec)
삽입 명령을 사용하여 테이블에 일부 레코드를 삽입하십시오. 쿼리는 다음과 같습니다.
mysql> insert into SumOfAll values(100); Query OK, 1 row affected (0.18 sec) mysql> insert into SumOfAll values(330); Query OK, 1 row affected (0.24 sec) mysql> insert into SumOfAll values(450); Query OK, 1 row affected (0.10 sec) mysql> insert into SumOfAll values(400); Query OK, 1 row affected (0.20 sec)
select 문을 사용하여 테이블의 모든 레코드를 표시합니다. 쿼리는 다음과 같습니다.
mysql> select *from SumOfAll;
다음은 출력입니다.
+--------+ | Amount | +--------+ | 100 | | 330 | | 450 | | 400 | +--------+ 4 rows in set (0.00 sec)
이제 값이 테이블에 있는지 여부를 확인하는 저장 프로시저를 만듭니다. 주어진 값이 테이블에 없으면 NULL 값을 얻습니다.
저장 프로시저는 다음과 같습니다.
mysql> DELIMITER // mysql> create procedure sp_ChechValue(IN value1 int,OUT value2 int) -> begin -> set value2=(select Amount from SumOfAll where Amount=value1); -> end; -> // Query OK, 0 rows affected (0.20 sec) mysql> delimiter ;
어떤 값으로 저장 프로시저를 호출하고 출력을 세션 변수에 저장합시다.
사례 1:테이블에 값이 없는 경우.
mysql> call sp_ChechValue(300,@isPresent); Query OK, 0 rows affected (0.00 sec)
이제 select 문을 사용하여 @isPresent 변수의 값을 확인합니다. 쿼리는 다음과 같습니다.
mysql> select @isPresent;
다음은 출력입니다.
+------------+ | @isPresent | +------------+ | NULL | +------------+ 1 row in set (0.00 sec)
사례 2:값이 있는 경우.
쿼리는 다음과 같습니다. 저장 프로시저를 호출해 보겠습니다.
mysql> call sp_ChechValue(330,@isPresent); Query OK, 0 rows affected (0.00 sec)
세션 변수 @isPresent의 값을 확인하십시오. 쿼리는 다음과 같습니다.
mysql> select @isPresent;
다음은 출력입니다.
+------------+ | @isPresent | +------------+ | 330 | +------------+ 1 row in set (0.00 sec)