MySQL記憶プロセスパラメータには3つのタイプがあります。(in、out、inout)
3010 ワード
一、MySQL格納プロセスパラメータ(in)MySQL格納プロセス「in」パラメータ:C言語の関数パラメータの値伝達と似ています。MySQL記憶プロセス内部ではこのパラメータは修正されるかもしれませんが、inタイプパラメータの修正は、コーディネーターにとっては見られないものです。
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);
+--------ハンググググinner|+-----------+124; 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);
+--------ハンググググ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_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);
+--------ハンググググinner.1|+--------------------------------------------------------------ハングハングinner.2|+------------------------------------------------------------ハングハングinner.3|+------------------------------------------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」タイプのパラメータを使います。