mysqlデータストアプロセスパラメータの実例


MySQL記憶プロセスパラメータは、3つのタイプがあります。in、out、inout。それぞれどんな役割と特徴がありますか?
一、MySQL格納プロセスパラメータ(in)
MySQL格納プロセス「in」パラメータ:C言語の関数パラメータの値伝達と類似しており、MySQL記憶プロセスの内部ではこのパラメータが修正されるかもしれないが、inタイプパラメータの修正は、使用者にとっては見えない(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であることが確認されます。inner)しかし、外部変数の値は依然として:10(id_out)
二、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_u u)となります。inner.1)最後のid値(id_u)out=1)使用者に回送する。
三、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_u)を計算します。inner.3)転用者に回送する。MySQL格納プロセスinoutパラメータの挙動はC言語関数の参照伝達値と類似している。
以上の例を通して、MySQL格納プロセスにデータを転送するだけであれば、「in」タイプのパラメータを使用します。MySQL記憶プロセスから値を返すだけなら、「out」タイプのパラメータを使用する。もしデータをMySQL格納プロセスに転送する必要があるなら、まだいくつかの計算を経てから私たちに伝えます。この時は、「inout」タイプのパラメータを使います。
締め括りをつける
以上がmysqlデータストアプロセスのパラメータ例について詳しく説明した内容の全部です。MySQLを理解するのに役に立つと思います。興味のある方は引き続き当駅を参照してください。MySQLに記憶されている日時タイプの選択問題を解析します。MySQL宣言変数と格納プロセスの分析など、何か問題があったらいつでもメッセージを残してください。友達のサポートに感謝します。