mysql 데이터 저장 프로세스 매개 변수 실례 설명

4080 단어
MySQL 저장 프로세스 매개 변수는 세 가지 종류가 있는데 그것이 바로 in,out,inout이다.그것들은 각각 어떤 작용과 특징을 가지고 있습니까?
1. MySQL 저장 프로세스 매개 변수(in)
MySQL 저장 프로세스'in'매개 변수: C 언어의 함수 매개 변수의 값 전달과 유사하여 MySQL 저장 프로세스 내부에서 이 매개 변수를 수정할 수 있지만 in 형식 매개 변수의 수정은 호출자(caller)에게는 보이지 않습니다(not visible).

drop procedure if exists pr_param_in;
create procedure pr_param_in
(
  in id int -- in     MySQL       
)
begin
  if (id is not null) then
   set id = id + 1;
  end if;
  select id as id_inner;
end;

set @id = 10;
call pr_param_in(@id);
select @id as id_out;

mysql> call pr_param_in(@id);
+----------+
| id_inner |
+----------+
|    11 |
+----------+

mysql> select @id as id_out;
+--------+
| id_out |
+--------+
| 10   |
+--------+

볼 수 있습니다: 사용자 변수 @id 전송 값은 10이고 저장 프로세스를 실행한 후 프로세스 내부 값은 11 (id inner) 이지만 외부 변수 값은 10 (id out) 입니다.
2. MySQL 저장 프로세스 매개 변수(out)
MySQL 저장 프로세스'out'매개 변수: 저장 프로세스 내부에서 호출자에게 값을 전달합니다.저장 프로세스 내부에서 이 매개 변수의 초기 값은null입니다. 호출자가 저장 프로세스 매개 변수에 값을 설정하든지 말든지.

drop procedure if exists pr_param_out;
create procedure pr_param_out
(
  out id int
)
begin
  select id as id_inner_1; -- id      null
  if (id is not null) then
   set id = id + 1;
   select id as id_inner_2;
  else
   select 1 into id;
  end if;
  select id as id_inner_3;
end;

set @id = 10;
call pr_param_out(@id);
select @id as id_out;

mysql> set @id = 10;
mysql>
mysql> call pr_param_out(@id);
+------------+
| id_inner_1 |
+------------+
|    NULL |
+------------+

+------------+
| id_inner_3 |
+------------+
|     1 |
+------------+

mysql> select @id as id_out;
+--------+
| id_out |
+--------+
| 1   |
+--------+

사용자 정의 변수 @id를 10으로 설정하고 @id를 저장 프로세스에 전달한 후 저장 프로세스 내부에서 id의 초기 값은 항상null(id inner 1)임을 알 수 있다.마지막 id 값(id out = 1)은 호출자에게 반환됩니다.
3. MySQL 저장 프로세스 매개 변수(inout)
MySQL 저장 프로세스inout 매개 변수는 out과 유사하며 저장 프로세스 내부에서 호출자에게 값을 전달할 수 있습니다.다른 것은 호출자는 inout 파라미터를 통해 저장 프로세스에 값을 전달할 수 있다는 것이다.

drop procedure if exists pr_param_inout;
create procedure pr_param_inout
(
  inout id int
)
begin
  select id as id_inner_1; -- id           
  if (id is not null) then
   set id = id + 1;
   select id as id_inner_2;
  else
   select 1 into id;
  end if;
  select id as id_inner_3;
end;

set @id = 10;
call pr_param_inout(@id);
select @id as id_out;

mysql> set @id = 10;

mysql>
mysql> call pr_param_inout(@id);
+------------+
| id_inner_1 |
+------------+
|     10 |
+------------+

+------------+
| id_inner_2 |
+------------+
|     11 |
+------------+

+------------+
| id_inner_3 |
+------------+
|     11 |
+------------+
mysql>
mysql> select @id as id_out;
+--------+
| id_out |
+--------+
| 11   |
+--------+

결과에서 알 수 있듯이 @id(10)를 저장 프로세스에 전달한 후 저장 프로세스는 마지막에 계산 결과 값 11(id inner 3)을 호출자에게 전송한다.MySQL 저장 프로세스inout 매개 변수의 동작은 C 언어 함수의 인용 전송값과 유사합니다.
상기 예를 통해: MySQL 저장 프로세스에만 데이터를 전달하려면'in'형식 파라미터를 사용한다.MySQL 저장 프로세스에서만 값을 되돌려주면'out'형식 파라미터를 사용합니다.MySQL 저장 프로세스에 데이터를 전송해야 한다면 계산을 거친 후에 다시 우리에게 전송해야 합니다. 이 때 'inout' 형식 파라미터를 사용해야 합니다.
총결산
이상은 본고의 mysql 데이터 저장 프로세스 매개 변수에 대한 상세한 내용입니다. 여러분들이 MysQL을 이해하는 데 도움이 되었으면 합니다.관심 있는 분들은 본 사이트를 계속 참고하실 수 있습니다. MySQL에 저장된 시간 날짜 유형의 선택 문제, MySQL 성명 변수와 저장 과정 분석 등을 분석할 수 있습니다. 문제가 있으면 언제든지 댓글을 남기고 편집자는 제때에 답장을 드리겠습니다.본 사이트에 대한 여러분의 지지에 감사 드립니다!

좋은 웹페이지 즐겨찾기